【问题标题】: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 或您获取数据的任何地方。

        【讨论】:

          猜你喜欢
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-03
          • 1970-01-01
          • 1970-01-01
          • 2020-01-19
          • 1970-01-01
          相关资源
          最近更新 更多