gpt4 book ai didi

android - getPackageManager ().getInstalledPackages (PackageManager.GET_ACTIVITIES) 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:26 32 4
gpt4 key购买 nike

如果我打电话

    PackageManager pm = getPackageManager () ;
List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_PROVIDERS) ;

我得到了已安装包的列表,包括它们声明的任何提供者(即 pis[i].providers 可能是非空的)。

但是,如果我在标志中包含 PackageManager.GET_ACITIVITIES,如

    PackageManager pm = getPackageManager () ;
List<PackageInfo> pis = pm.getInstalledPackages (PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS) ;

我希望获得“相同”的已安装包列表,但 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 ()) ;
}

但这似乎是一场真正的混战。

我能找到的唯一提到返回空列表的 getInstalledPackages (PackageManager.GET_ACTIVITIES) 是 here ,但这种情况下的问题似乎是在主应用程序线程外调用 getInstalledPackages() 而不是我的情况。

附注这是 Gingerbread 的 .602 VZW 版本,以防万一

最佳答案

我遇到了同样的问题并找到了更好的解决方法:

public void listAllActivities() throws NameNotFoundException
{
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(PackageInfo pack : packages)
{
ActivityInfo[] activityInfo = getPackageManager().getPackageInfo(pack.packageName, PackageManager.GET_ACTIVITIES).activities;
Log.i("Pranay", pack.packageName + " has total " + ((activityInfo==null)?0:activityInfo.length) + " activities");
if(activityInfo!=null)
{
for(int i=0; i<activityInfo.length; i++)
{
Log.i("PC", pack.packageName + " ::: " + activityInfo[i].name);
}
}
}
}

请注意,我需要查询 PackageManager 两次。使用一次 getPackageManager().getInstalledPackages(...) 并再次使用 getPackageManager().getPackageInfo(...)

希望对你有帮助。

关于android - getPackageManager ().getInstalledPackages (PackageManager.GET_ACTIVITIES) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374704/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com