关于getInstalledPackages的参数的问题

本文探讨了在G9真机上使用getPackageManager().getInstalledPackages()方法的不同参数进行测试时出现的问题。详细解释了参数0与PackageManager.GET_ACTIVITIES的区别,并给出了合理的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我遇到的问题:

G9真机上测试,在onCreate的最后添加getPackageManager().getInstalledPackages(0)可以正确得到已安装程序,而getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES)却会报错如下:
01-06 11:56:55.028: ERROR/JavaBinder(29183): !!! FAILED BINDER TRANSACTION !!!
这是什么原因呢?

 

获取系统内Applications的基本信息可以使用以下这个方法。
getPackageManager().getInstalledPackages(0)
但是这个参数里面的0是什么意思呢?
得到activities应该是使用这个参数PackageManager.GET_ACTIVITIES吧?
而且PackageManager.GET_ACTIVITIES= 0x00000001的哇,而上面为什么用0喃?


答:

里面的flag参数,只是一个过滤标志,0 是过滤permission,根据自己的需求设置flag,都是合理的。

这些flag没有仔细研究过
我在我的手机上测试 PackageManager.GET_ACTIVITIES  和 0 的结果一样都是 一样的,看看系统的那个appmanager,他不是这么获得安装的apk的,用的是getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES)
因为有些apk可能被删掉 但是数据还在 所以用GET_UNINSTALLED_PACKAGES 这个flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值