重启后,Android Home Shortcut丢失标记

时间:2012-02-03 19:39:09

标签: java android shortcut

我的Android应用程序使用android.intent.action.CREATE_SHORTCUT的intent过滤器定义了一个活动,它允许我显示用户可以添加到主页的快捷方式列表,当他们选择“添加快捷方式”时菜单或长按主页。

在此活动中,我有以下代码(实际上在选择要添加的快捷方式后的点击事件中发生):

Intent shortcutIntent = new Intent(this,MyActivity.class);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ShortcutIconResource iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.myicon);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "MyAppName");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
setResult(RESULT_OK, intent); 
finish();

快捷方式可以正常工作,直到我重新启动设备。我实际上是在模拟器上测试,而不是真正的设备。重启后仍然存在快捷方式,所以我知道我没有擦除用户数据或类似的东西,但它的作用就像点击时不再有FLAG_ACTIVITY_NEW_TASK设置。

重新创建的示例步骤(为了清楚起见,假设我的应用是电子邮件收件箱):

  1. 创建快捷方式

  2. 从主菜单acitvity启动我的收件箱活动,该活动使用NEW_TASK标志。

  3. 在收件箱活动中,点击邮件以打开查看邮件活动。

  4. 按HOME键

  5. 点击快捷方式 - 此时它将整个“任务堆栈”带回到前面,在堆栈顶部显示查看消息活动,单击后退回到收件箱活动,就像我想的那样预期

  6. 重启设备

  7. 重复步骤2到5 ..现在,当我单击快捷方式时,它不会将视图消息活动带到前面,而是将任务放在前面,但随后会在上面添加一个新的收件箱活动。堆。因此,按BACK一次返回到查看邮件活动,然后再返回收件箱活动。

  8. 我还尝试在app清单中为我的收件箱活动设置不同的属性,例如singleTask,但没有运气。这是一个已知的问题,标志不是用快捷方式保存的吗?

    我想我会尝试添加一个新的存根活动,除了使用NEW_TASK标志启动真实活动然后退出,然后让我的快捷方式指向它。然而,似乎有很多开销,所以希望有人有更好的答案。

0 个答案:

没有答案