我想在我的应用中将主屏幕快捷方式添加到各个聊天室。这是我的代码:
Intent roomIntent = roomIntent(room).putExtra("shortcut", true);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, roomIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, room.name);
Parcelable resource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, resource);
setResult(RESULT_OK, intent);
finish();
当我将快捷方式添加到我的主屏幕时,我得到一个Force Close,而不是我自己的进程,而是com.android.acore(!)。我运行调试器并验证我的代码一直执行到finish()的调用。
如果我这样做而不是EXTRA_SHORTCUT_ICON:
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, R.drawable.icon);
它工作正常并放置快捷方式,快捷方式行为正确 - 但当然快捷方式有Android图标,而不是我的,因为这不是指定图标的正确方法。
当我查看已完成此操作的其他应用的源代码,以及官方Android参考区域中的the one example时,我的代码看起来完全相同。我的图标是我用于应用程序主图标的标准48x48 png,没有任何问题。我已经在运行库存1.6的模拟器上验证了这个问题,还没有测试过其他版本。
我不知道我做错了什么。有什么想法吗?
答案 0 :(得分:1)
ACTION_CREATE_SHORTCUT
的Javadoc表示您应该EXTRA_SHORTCUT_ICON_RESOURCE
使用Intent.ShortcutIconResource
个对象,而不是您正在使用的EXTRA_SHORTCUT_ICON
密钥,用于直接放置Bitmap
Intent
其他内容{/ 1}}。
你可能也应该为Android bug tracker的崩溃提交一个错误,因为这样的错误不应该导致崩溃。