网上搜了下发下有如下方法
方法一:枚举 \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;
}
?