网上搜了下发下有如下方法



方法一:枚举 \data\app 文件夹,其下的*.apk文件 就是本机安装的软件,而\system\App下的*.apk文件就是系统自带的软件,



由于普通的程序是无法读取这两个文件夹的,需要root权限吧,因此该方法也行不通(用File.listFiles() + android.permission.FACTORY_TEST 权限 还是不能枚举出文件)

虽然不能枚举文件夹 "\data\app\",但我们可以访问(read)文件夹"\data\app\"下的所有文件,因此可以用如下的方法来获取本机上已经安装的软件(排除系统的应用程序):


public String getAppFileDir() {
 PackageManager pckMan = getPackageManager();
 List<PackageInfo> packs = pckMan.getInstalledPackages(0);
 int count = packs.size();
 String name;
 String fileDir = "";
 for (int i = 0; i < count; i++) {

 ApplicationInfo appInfo = p.applicationInfo;
 if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0){


 if(name.equals(getString(R.string.app_name))){
 fileDir = appInfo.sourceDir;
 break;
 }
 }
 }
 return fileDir;
   }
 
 
 
      ?