android - 无法从 SD 卡上的 APK 访问资源。

标签 android resources apk

我使用以下代码 fragment 来获取 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,任何指示将不胜感激。谢谢。

最佳答案

在创建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);

关于android - 无法从 SD 卡上的 APK 访问资源。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866463/

相关文章:

android - Kotlin 不调用 super

android - 如何构建类似于套件的应用程序

android - 如何使用 DexGuard 混淆 XML 资源文件?

android - Proguard (R8) 否定运算符(operator)不工作以保留某些包以外的任何东西

android - 找不到 Library.apk!

android - 使用代码启用/禁用移动数据 (GPRS)

安卓线程问题

java - 退出应用程序时是否应该关闭所有资源?

c# - 本地化资源 .NET - 如何使它们保持同步?

android - 仅更改 apk 中的权限并在 playstore 上重新发布