将 PendingIntent 中小部件的附加信息传递给 Activity

Posted

技术标签:

【中文标题】将 PendingIntent 中小部件的附加信息传递给 Activity【英文标题】:Passing extras from widget in PendingIntent to Activity 【发布时间】:2015-03-30 23:42:21 【问题描述】:

我找不到将附加组件从小部件正确传递到 Activity 的方法。

我不想在按钮点击时打开活动并传递了一些额外内容。

    Intent intent = new Intent(context, CreateOperationsActivity.class);
    intent.putExtra("someKey", true);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, Constants.RequestCodes.CREATE_OPERATIONS, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    views.setOnClickPendingIntent(R.id.add_expense_button, pendingIntent);

Activity打开了,但是Intent里面没有多余的。

我能够传递额外内容的唯一方法是将PendingIntent 标志设置为PendingIntent.FLAG_ONE_SHOT,但小部件按钮只能工作一次,进一步单击它不会采取任何行动。

如何做到这一点,以便Activity 拦截额外的并且按钮每次都有效?

【问题讨论】:

我遇到了同样的问题,但我将这些值放在共享存储中并从活动中获取这些值而不是 bcz 在这里我们不能在意图中添加额外的内容 是的,我知道我可以做到,但这只是磨蹭我的齿轮......我不想正确地做到这一点 我也卡在那个点上,没有得到正确的答案 【参考方案1】:

您的 Intent 可能缺少 setAction() ;)请参阅此以获得更好的解释:https://***.com/a/3128271/515423

【讨论】:

它没有帮助,但动作被正确传递,与额外内容相反......所以可以使用动作来解决问题。然而它并不干净

以上是关于将 PendingIntent 中小部件的附加信息传递给 Activity的主要内容,如果未能解决你的问题,请参考以下文章

Android PendingIntent 启动Activity

单个小部件的多个 PendingIntent

看不到点击意图附加信息的小部件

使用 PendingIntent 的应用程序小部件中的 Oreo 服务未启动

带有附加功能的地理围栏 PendingIntent

Widget + TaskKiller 中的 PendingIntent