2011-07-28 8 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가에 대한 기본 안드로이드 응용 프로그램 아이콘과 패키지 이름 (응용 프로그램 라벨)를 반환loadLabel를 반환loadIcon에 액세스 할 수있게되었습니다.

는 또한 로그 캣에 다음과 같은 경고 메시지를 얻을 :

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

내가 안드로이드 2.2를 실행하고, 어떤 포인터는 이해할 수있을 것이다. 감사.

+0

권한이있는 마십시오 저장 장치에 읽기/쓰기를 위해? –

+0

지금 포함 시키려고했으나 작동하지 않습니다. ( –

답변

6

당신은 appIcon, 프로그램 응용을 만들기 전에 두 줄을 추가해야 할 수 있습니다 :

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를 알기에 충분히 똑똑하다고 생각했을 것입니다. about 특정 경로와 함께'getPackageArchiveInfo'를 사용하고 난 후에 ... 그러나 나는 추측하지 않는다! – kpninja12

관련 문제