【问题标题】:Get other applications icon uri?获取其他应用程序图标 uri?
【发布时间】:2011-08-19 07:25:21
【问题描述】:
我有一个 Android appwidget,上面显示了其他应用程序的图标。
我使用 appInfo.loadIcon 获取其他应用程序图标,然后使用 setImageViewBitmap 将其设置为小部件。
问题是,如果小部件上有太多图标,我会收到“FAILED BINDER TRANSACTION”错误。我知道这是由于大小限制以及使用图像uri而不是位图本身的解决方案。
是否有可访问其他应用程序图标的 URI?
谢谢。
【问题讨论】:
标签:
android
icons
android-appwidget
【解决方案1】:
如果不知道资源名称,也可以通过资源id访问资源:
android.resource://[package]/[res_id]
应用图标的资源id可以在应用的ApplicationInfo找到:
ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if(appInfo.icon != 0) {
Uri uri = Uri.parse("android.resource://" + packageName + "/" + appInfo.icon);
}
【解决方案2】:
虽然@CommonWare's answer 在很多情况下都很好,但我发现这通常更容易:
android.resource://[package]/[res id] - 特别是当您想要引用其他应用程序的启动器图标时。
【解决方案3】:
试试android.resource://[package]/[res type]/[res name],在你的情况下[res type] 是drawable。包和名称必须来自ResolveInfo 或您获取数据的任何地方。