我已经编写了一个工作代码,用于显示所有应用程序中所有可用快捷方式的列表,并将所选快捷方式的意图捕获为应用程序名称和快捷方式。但我似乎无法找到如何获得快捷方式图标。在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);
}
}
}
答案 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_RESOURCE
是ShortcutIconResource,这是一个包含两个字符串的类:packageName
和resourceName
。
(这些可用于加载第三方应用的资源,然后使用资源名称获取Bitmap资源。)