待定意图的多个实例

tar*_*oca 52 android widget

我创建了一个小部件,单击该小部件可激活PendingIntent.问题是当我在屏幕上有多个小部件时,只有最新的小部件会启动PendingIntent.

我已经阅读了一些关于唯一请求代码的内容,但没有想到这一点.

任何想法如何我可以有多个小部件和PendingIntents为每个工作?

这是我的代码片段:

Intent openApp = new Intent(context, RunningTally.class);
    openApp.putExtra("widgetId", appWidgetId);
    PendingIntent pendingAppIntent = 
        PendingIntent.getActivity(context, 0, openApp, PendingIntent.FLAG_CANCEL_CURRENT  );
    views.setOnClickPendingIntent(R.id.openFull, pendingAppIntent);
Run Code Online (Sandbox Code Playgroud)

tar*_*oca 111

所以,在发布我的问题之后,我想出了一个答案.我将appWidgetId作为"唯一"请求代码传递给我们!这是现在的片段:

Intent openApp = new Intent(context, RunningTally.class);
    openApp.putExtra("widgetId", appWidgetId);
    PendingIntent pendingAppIntent = 
        PendingIntent.getActivity(context, appWidgetId, openApp, 
                                  PendingIntent.FLAG_CANCEL_CURRENT);
    views.setOnClickPendingIntent(R.id.openFull, pendingAppIntent);
Run Code Online (Sandbox Code Playgroud)

  • 最糟糕的是文档说:requestCode发件人的私有请求代码(当前未使用).所以我看到了它,但我没有尝试使用它因为我认为它不起作用! (23认同)
  • 遗憾的是文档中没有提到请求代码的官方用法...... (8认同)
  • 值得注意的是 - 它没有被标记_当前没有被使用_ http://developer.android.com/reference/android/app/PendingIntent.html#getBroadcast(android.content.Context,%20int,%20android.content.Intent,% 20int) (4认同)
  • 这里的关键是UNIQUE请求代码.如果你传递两个相同的 - 一个将无法工作. (3认同)
  • 正如我已经注意到的,这应该适用于任何类型的待处理意图(包括通知的意图).我认为最好放一个管理你所有类型的类,以避免重写它们. (2认同)