2011-07-28 56 views
2

我正在使用以下代碼片段來獲取SD卡上少數APK的應用程序名稱和圖標。無法從SD卡上的APK訪問資源。

PackageInfo packageInfo = packageManager.getPackageArchiveInfo(apkPath, 0); 
ApplicationInfo appInfo = packageInfo.applicationInfo; 
Drawable appIcon = appInfo.loadIcon(packageManager); 
String appName = appInfo.loadLabel(packageManager).toString(); 

我能夠訪問包名字,但loadIcon返回所有的APK默認的Android應用程序圖標和loadLabel返回包名(而不是應用程序標籤)。

我也得在logcat中以下警告消息:

Failure retrieving icon 0x7f020005 in package com.sample.radio 
Failure retrieving text 0x7f050000 in package com.taskkiller.demo 

我運行Android 2.2系統,任何指針將不勝感激。謝謝。

+0

你有權限讀取/在寫入存儲? –

+0

我現在嘗試了包括它,但不起作用:( –

回答

6

您可能需要創建APPICON,AppName的前添加兩行:

PackageManager pm = getPackageManager(); 
PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0); 

// NEW LINES 
pi.applicationInfo.sourceDir = APKFilePath; 
pi.applicationInfo.publicSourceDir = APKFilePath; 

String AppName = (String)pi.applicationInfo.loadLabel(pm); 
Drawable appIcon=pm.getApplicationIcon(pi.applicationInfo); 
+0

您需要具體說明需要更改的內容。 – JoshDM

+0

非常感謝!我一直認爲它足夠聰明,可以知道我在說什麼APK關於特定路徑專門使用'getPackageArchiveInfo'之後......但我猜不是! – kpninja12