2011-07-28 12 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(); 

私は、パッケージ名が、すべてのAPKのデフォルトのAndroidアプリケーションのアイコンとパッケージ名(未アプリケーションのラベルを)返しloadLabelを返しloadIconにアクセスすることができています。

私も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はを作成する前に2行を追加する必要があります。

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