如果我打电话
PackageManager pm = getPackageManager () ;
List
我得到一个已安装软件包的列表,包括他们声明的任何提供者(即,pis [i] .providers可能是非null).
但是,如果我在标志中包含PackageManager.GET_ACITIVITIES,如
PackageManager pm = getPackageManager () ;
List
我希望得到已安装包的“相同”列表,但pis [i] .activities也是非空的.但我没有,我得到一个空列表.
在documentation中没有提到的标志中包含PackageManager.GET_ACTIVITES有什么特别之处吗?
我目前的工作是将PackageManager.GET_ACTIVITIES从标志中删除,然后循环返回列表,如下所示:
for (PackageInfo pi : pis) {
try {
PackageInfo tmp = pm.getPackageInfo (pi.packageName,PackageManager.GET_ACTIVITIES) ;
pi.activities = tmp.activities ;
}
catch (NameNotFoundException e) {
Log.e (TAG,e.getMessage ()) ;
}
但这似乎是一个真正的kludge.
我唯一能提到的getInstalledPackages(PackageManager.GET_ACTIVITIES)返回一个空列表是here,但在这种情况下的问题似乎是在主应用程序线程外调用getInstalledPackages(),这不是我的情况.
附:这是姜饼的.602 VZW版本,如果重要的话
最佳答案
我遇到了同样的问题,发现了一个更好的解决方法:
public void listAllActivities() throws NameNotFoundException
{
List
请注意,我需要两次查询PackageManager.一旦使用getPackageManager().getInstalledPackages(…)并再次使用getPackageManager().getPackageInfo(…)
我希望它有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。