2012-06-23 257 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中我唯一的應用程序,即使有一個描述是天文文件管理器,就是這樣,沒有別的。不用擔心,我想這是一個可移動的功能。再次感謝您的快速,周到的回覆=) –