在google上输入以上的关键字+ android,可以搜到的代码: ? 虽然,有些代码号称可以过滤掉系统自身的应用程序,但是只要细看代码就会发现,好像里面的那个布尔变量没有起到什么过滤的作用。 方法一:通过获取的安装包(包括安装的与系统自身的应用程序),对其android.content.pm.PackageInfo的packageName 进行过滤, 但是Anrodi与google的包比较容易过滤掉,但需要对不同产商进行适配; 方法二:枚举 \data\app 文件夹,其下的*.apk文件 就是本机安装的软件,而\system\App下的*.apk文件就是系统自带的软件, 由于普通的程序是无法读取这两个文件夹的,需要root权限吧,因此该方法也行不通(用File.listFiles() + android.permission.FACTORY_TEST 权限 还是不能枚举出文件) 虽然不能枚举文件夹 "\data\app\",但我们可以访问(read)文件夹"\data\app\"下的所有文件,因此可以用如下的方法来获取本机上已经安装的软件(排除系统的应用程序):Android上获取本机安装的应用程序
1
List<PackageInfo> packs = getPackageManager().getInstalledPackages(
0
);
01
PackageManager pckMan = getPackageManager();
02
List<PackageInfo> packs = pckMan.getInstalledPackages(
0
);
03
count = packs.size();
04
String name;
05
int
?installedNum =?
0
;
06
for
(
int
?i =?
0
; i < count; i++) {
07
????????????????
PackageInfo p = packs.get(i);
08
????
if
?(p.versionName ==?
null
)
09
????????
continue
;
10
???
?
详细解决方案
Android——获取本机装配的应用程序(转)
热度:57 发布时间:2016-05-01 16:18:07.0