在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\"下的所有文件,因此可以用如下的方法来获取本机上已经安装的软件(排除系统的应用程序): 方法三、可以通过uid来过滤系统系统的安装包,因为android系统中的uid从 1000 ~ 9999 都是给系统程序保留的,所以只要判断package的uid > 10000即可判定该程序是非系统程序。 ? uid是程序在安装的时候由系统分配的。 ?方法四:这个方法应该是最优的。 ?转自:http://www.cnblogs.com/mengshu-lbq/archive/2010/09/09/1822237.htmlList<PackageInfo> packs = getPackageManager().getInstalledPackages(
0
);
PackageManager pckMan = getPackageManager();
List<PackageInfo> packs = pckMan.getInstalledPackages(
0
);
count = packs.size();
String name;
int
installedNum =
0
;
for
(
int
i =
0
; i < count; i++) {
????????????????
PackageInfo p = packs.get(i);
????
if
(p.versionName ==
null
)
????????
continue
;
???
??????????????
//判断该软件包是否在/data/app目录下
????
File f1 =
new
File(?
"/data/app/"
+? p.packageName +
".apk"
);
????
if
(!f1.exists())
continue
;
????
installedNum++;
????
/**
?????
* 应用程序的名字
?????
*/
????
name = p.applicationInfo.loadLabel(pckMan).toString();
}
if
(p.applicationInfo.uid >
10000
)
???
//非系统程序
ApplicationInfo appInfo = p.applicationInfo;
????
/**
?????
* Value for [email protected] #flags}: if set, this application is installed in the
?????
* device's system image.
?????
*/
if
((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) >
0
)
????
//系统程序
else
????
//不是系统程序
详细解决方案
android获取装配的应用程序
热度:103 发布时间:2016-05-01 14:26:53.0
1
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
?
1
2
1
2
3
4
5
6
7
8
9
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- windows 2003服务器-事件查看器-应用程序-复核失败-SA
- 应用程序“DEFAULT WEB SITE”中的服务器异常有关问题,好烦的
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- c#应用程序,一个简单的有关问题
- 会导致 asp.net 应用程序 重启 的所有 可能原因,该如何处理