获取sdcard上的所有apk

package com.shishixun.installapk;
import java.io.file;<br>import java.io.filefilter;<br>import java.util.arraylist;
import android.app.activity;<br>import android.content.pm.packageinfo;<br>import android.content.pm.packagemanager;<br>import android.graphics.drawable.drawable;<br>import android.os.bundle;<br>import android.text.format.formatter;<br>import android.util.log;
public class mainactivity extends activity {<br>    /** called when the activity is first created. */<br>    @override<br>    public void oncreate(bundle savedinstancestate) {<br>        super.oncreate(savedinstancestate);<br>        setcontentview(r.layout.main);<br>        final file appfolder = new file( "/sdcard" );<br>     arraylist<file> files = getfiles( appfolder,<br>    true );<br>     packagemanager pm = getpackagemanager( );<br>     for ( int i = 0, size = files.size( ); i < size; i++ )<br>  {<br>   file f = files.get( i );<br>   packageinfo pi= pm.getpackagearchiveinfo( f.getabsolutepath( ), 0 );<br>   if ( pi != null )<br>   {<br>    apkinfo holder = new apkinfo( );<br>    holder.file = f;<br>    holder.pkgname = pi.packagename;<br>    holder.size = f.length( );<br>    holder.sizestring = formatter.formatfilesize( mainactivity.this,<br>      holder.size );<br>    holder.version = pi.versionname == null ? string.valueof( pi.versioncode )<br>      : pi.versionname;<br>    system.out.println("file="+f+"pkgname="+holder.pkgname +"size"+holder.sizestring+"version"+holder.version  );<br>   }<br>  }
    }<br>    <br>    <br>    arraylist<file> getfiles( file parent, final boolean recursive )<br> {<br>  final arraylist<file> files = new arraylist<file>( );
  filefilter filter = new filefilter( ) {
   public boolean accept( file f )<br>   {<br>    if ( f.isfile( )<br>      && f.getname( ).tolowercase( ).endswith( ".apk" ) )
    {<br>     files.add( f );<br>    }<br>    else if ( recursive && f.isdirectory( ) )<br>    {<br>     try<br>     {<br>      // try skip links<br>      if ( f.getabsolutepath( )<br>        .equals( f.getcanonicalpath( ) ) )<br>      {<br>       f.listfiles( this );<br>      }<br>     }<br>     catch ( exception e )<br>     {<br>      log.e( mainactivity.class.getname( ),<br>        e.getlocalizedmessage( ),<br>        e );<br>     }<br>    }<br>    return false;<br>   }<br>  };
  parent.listfiles( filter );
  return files;<br> }<br>    <br>    <br>    /**<br>  * apkinfo<br>  */<br> private static final class apkinfo<br> {
  file file;<br>  charsequence label;<br>  string pkgname;<br>  string version;<br>  string sizestring;<br>  long size;<br>  drawable icon;<br>  int installed;<br>  boolean checked;
  apkinfo( )<br>  {
  }<br> }<br>}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值