2012-06-23 219 views
0

我可以使用下面的代码成功获取应用程序的标题,版本和图标,但出于某种原因,说明始终返回为null。任何帮助表示赞赏。Android:applicationInfo.loadDescription()总是返回null

相关代码: -

List<PackageInfo> packs = packageManager.getInstalledPackages(0); 

    for(int i=0; i < packs.size(); i++) { 
    PackageInfo p = packs.get(i); 
    // skip system apps if they shall not be included 
    if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) { 
     continue; 
    } 
    App app = new App(); 
    app.setTitle(p.applicationInfo.loadLabel(packageManager).toString()); 
    app.setPackageName(p.packageName); 
    app.setVersionName(p.versionName); 
    app.setVersionCode(p.versionCode); 
    CharSequence description = p.applicationInfo.loadDescription(packageManager); //error here? 
    app.setDescription(description != null ? description.toString() : ""); 
    apps.add(app); 
    } 

App类只是一个bean类,只是将赋予它的价值,仅此而已。错误在那里是不可能的,因为我确实得到了一个“”来描述。即由于某种原因,描述将变为空。

+2

你是否肯定你正在浏览的应用程序有描述?包括我所写的所有应用程序在内的大多数应用程序都没有。如果没有设置描述,该方法返回null。 – Tom

回答

3

似乎有什么好的代码。你的假设,任何应用程序都有一个描述,在这种情况下似乎是“错误”。 PackageManager读取应用程序清单中的任何内容。任何应用程序开发人员都可以自由地向其提供描述。看起来他们中的大多数人(包括我)都没有看到这样做的理由,因为我不知道使用这个描述的地方(除了可以通过PackageManager查询的事实)。

为了做到这一点,您可以在手机或模拟器上安装HelloWorld应用程序,并在其清单中提供说明。你应该使用你的代码来获得它。

+0

谢谢!你是对的。这只是我至少认为官方的谷歌/三星/等。应用程序会有一个描述,但是当他们没有显示任何我认为我的代码有问题时。 300中我唯一的应用程序,即使有一个描述是天文文件管理器,就是这样,没有别的。不用担心,我想这是一个可移动的功能。再次感谢您的快速,周到的回复=) –