Android下获取本机安装的应用程序
Android上获取本机安装的应用程序
在google上输入以上的关键字+ android,可以搜到的代码:
1 |
List<PackageInfo> packs = getPackageManager().getInstalledPackages( 0 );
|
虽然,有些代码号称可以过滤掉系统自身的应用程序,但是只要细看代码就会发现,好像里面的那个布尔变量没有起到什么过滤的作用。
方法一:通过获取的安装包(包括安装的与系统自身的应用程序),对其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\"下的所有文件,因此可以用如下的方法来获取本机上已经安装的软件(排除系统的应用程序):
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 |
|
- 1Android带明白按钮的EditText
- 2android 语言定做
- 3(原)Android理论梳理-No1异步处理之Handler相干机制
- 4Android快速开发必不可少的11个工具类
- 5ScrollView里嵌套ListView,怎么禁用ListView的滚动事件,或者触发ListView滚动时调用父元素ScrollView的滚动事件
- 6listview 动态添加,该如何解决
- 7FBReaderJ学习笔记(3):Footer底部状态栏更改
- 8eclipse中怎么修改项目名称 具体操作
- 9android GPS 获取定位坐标信息解决方法
- 10Android学习笔记19:含有通知栏的进度条的Android下载文件
文章评论
相关解决方案