获取sdcard上的所有apk

package com.shishixun.installapk;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;

import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.format.Formatter;
import android.util.Log;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final File appFolder = new File( "/sdcard" );
     ArrayList<File> files = getFiles( appFolder,
    true );
     PackageManager pm = getPackageManager( );
     for ( int i = 0, size = files.size( ); i < size; i++ )
  {
   File f = files.get( i );
   PackageInfo pi= pm.getPackageArchiveInfo( f.getAbsolutePath( ), 0 );
   if ( pi != null )
   {
    ApkInfo holder = new ApkInfo( );
    holder.file = f;
    holder.pkgName = pi.packageName;
    holder.size = f.length( );
    holder.sizeString = Formatter.formatFileSize( MainActivity.this,
      holder.size );
    holder.version = pi.versionName == null ? String.valueOf( pi.versionCode )
      : pi.versionName;
    System.out.println("file="+f+"pkgName="+holder.pkgName +"size"+holder.sizeString+"version"+holder.version  );
   }
  }

    }
   
   
    ArrayList<File> getFiles( File parent, final boolean recursive )
 {
  final ArrayList<File> files = new ArrayList<File>( );

  FileFilter filter = new FileFilter( ) {

   public boolean accept( File f )
   {
    if ( f.isFile( )
      && f.getName( ).toLowerCase( ).endsWith( ".apk" ) )

    {
     files.add( f );
    }
    else if ( recursive && f.isDirectory( ) )
    {
     try
     {
      // try skip links
      if ( f.getAbsolutePath( )
        .equals( f.getCanonicalPath( ) ) )
      {
       f.listFiles( this );
      }
     }
     catch ( Exception e )
     {
      Log.e( MainActivity.class.getName( ),
        e.getLocalizedMessage( ),
        e );
     }
    }
    return false;
   }
  };

  parent.listFiles( filter );

  return files;
 }
   
   
    /**
  * ApkInfo
  */
 private static final class ApkInfo
 {

  File file;
  CharSequence label;
  String pkgName;
  String version;
  String sizeString;
  long size;
  Drawable icon;
  int installed;
  boolean checked;

  ApkInfo( )
  {

  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值