获取其他应用程序图标uri?

时间:2011-08-19 07:25:22

标签: android icons android-appwidget

我有一个Android appwidget,可以显示其他应用程序的图标。

我使用appInfo.loadIcon获取其他应用程序图标,然后使用setImageViewBitmap将其设置为小部件。

问题是如果我的小部件上有太多图标,我会收到“FAILED BINDER TRANSACTION”错误。我知道这是从大小限制和解决方案使用图像uri而不是位图本身。

其他应用程序的图标是否有可访问的URI?

感谢。

3 个答案:

答案 0 :(得分:12)

如果您不知道资源名称,您还可以按ID:

访问资源
android.resource://[package]/[res_id]

应用的ApplicationInfo版提供了应用图标的资源ID:

ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if(appInfo.icon != 0) {
    Uri uri = Uri.parse("android.resource://" + packageName + "/" + appInfo.icon);
}

答案 1 :(得分:8)

虽然@CommonWare's answer在许多情况下都很好,但我发现这通常更容易: android.resource://[package]/[res id] - 尤其是当您想要引用某个其他应用的启动器图标时。

答案 2 :(得分:5)

尝试android.resource://[package]/[res type]/[res name],您的案例中[res type]drawable。包裹和名称必须来自ResolveInfo或您获取数据的任何地方。