Android - 选择快捷方式 - 我获得快捷方式的意图和标题,但无法获得快捷方式图标

时间:2014-03-11 19:42:17

标签: android icons shortcut

我已经编写了一个工作代码,用于显示所有应用程序中所有可用快捷方式的列表,并将所选快捷方式的意图捕获为应用程序名称和快捷方式。但我似乎无法找到如何获得快捷方式图标。在onActivityResult中,我尝试了data.getStringExtra(Intent.EXTRA_SHORTCUT_ICON)函数,但这会产生一个返回空的字符串。有人可以帮忙吗?

(我想要快捷图标...而不是应用图标)

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    Log.w("on activity result ston action picker","aaaa");
    if(resultCode == Activity.RESULT_OK && data != null) {
        switch (requestCode){
        case pick_shortcut:
                Intent j = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
                String shortcut_name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
                ComponentName componentName2 = j.getComponent();
                String packageName2 = componentName2.getPackageName();
                PackageManager packageManager2 =  getPackageManager();
                ApplicationInfo applicationInfo2 = null;
                try {
                    applicationInfo2 = packageManager2.getApplicationInfo(packageName2, 0);
                } catch (final NameNotFoundException e) {}
                String title2 = (String)((applicationInfo2 != null) ? packageManager2.getApplicationLabel(applicationInfo2) : "???");
                Log.w(shortcut_name,title2);
           }
       }
    }

1 个答案:

答案 0 :(得分:1)

你快到了。

Intent.EXTRA_SHORTCUT_ICON应该是一个有节奏的位图,而不是一个字符串。

所以不要使用:

  

data.getStringExtra(Intent.EXTRA_SHORTCUT_ICON)

你应该看看像:

  

Bitmap icon = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);


编辑:

作为旁注,如果您处理第三方应用,EXTRA_SHORTCUT_ICON可能为空,而EXTRA_SHORTCUT_ICON_RESOURCE可能会被传递。

EXTRA_SHORTCUT_ICON_RESOURCEShortcutIconResource,这是一个包含两个字符串的类:packageNameresourceName

(这些可用于加载第三方应用的资源,然后使用资源名称获取Bitmap资源。)