我有一个前台服务通知,点击后应该开始一个活动.这个活动在调用finish()之前很短暂.
第一次单击通知时,它会工作,第二次,然后我收到错误:
Sending contentIntent failed: android.app.PendingIntent$CanceledException
Run Code Online (Sandbox Code Playgroud)
在创建前台服务通知的代码中,我将randomActivity.class更改为另一个不调用finish的Activity类,它在每次单击时都能正常工作.从:
Intent notificationIntent = new Intent(this, RandomActivity.class);
Run Code Online (Sandbox Code Playgroud)
至:
Intent notificationIntent = new Intent(this, HomeActivity.class);
Run Code Online (Sandbox Code Playgroud)
工作良好...
我使用了Android开发者网站上的标准通知代码,并使用"通知"构建器对其进行了测试.无论如何我得到相同的结果.它完美地工作,除非Activity调用finish();
这是预期的行为,一个错误,还是我错过了什么?
我提前感谢你的帮助,希望能有一个解决方案!
注意:我使用的通知代码是完全标准的,所以我没有发布它.RandomActivity调用finish(); 在onCreate,所以也没有什么不寻常的.
bra*_*all 12
在尝试了我可能做的一切之后,我终于找到了解决方案.如果有人发现这个问题也会发布.
我必须将int requestCode与通知ID匹配.为什么?绝对不知道......我只能假设它会阻止意图数据变为空或重用它?
private static int ONGOING_NOTIFICATION_ID = 76;
PendingIntent contentIntent = PendingIntent.getActivity(this,
ONGOING_NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)
与startForeground的通知ID相同:
this.startForeground(ONGOING_NOTIFICATION_ID, not);
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人.
我不需要检查通知ID(如您建议的那样),但是我确实必须将标志更改为FLAG_UPDATE_CURRENT,而不是FLAG_ONE_SHOT。
使用FLAG_ONE_SHOT,待提交的意图一旦被发送就被取消,然后,没有任何轻敲通知将允许再次发送相同的待处理意图,因此是例外。
这是我的问题。
| 归档时间: |
|
| 查看次数: |
3158 次 |
| 最近记录: |