我正在将target-sdk切换到26(android O),并且由于新的后台执行限制,我的广播接收器不再工作了。根据Google文档
需要签名许可的广播免于此>限制,因为这些广播仅发送到使用相同证书签名>的应用,而不是设备上的所有应用。
所以我在清单中添加了自定义权限。当我以编程方式sendBroadcast(intent, "my.permission")
触发广播时,它正在工作,但我无法找到一种方法使其在推送通知上的操作按钮上工作,因为我不知道如何指定权限
notificationBuilder.addAction(drawable, "title", pendingIntent);
我的pendingIntent设置如下
Intent acceptIntent = new Intent();
acceptIntent.setAction("android.intent.action.ACCEPT_ACTION");
pendingIntent = PendingIntent.getBroadcast(context,PENDING_INTENT_ACCEPT_REQUEST_CODE, acceptIntent,
PendingIntent.FLAG_ONE_SHOT);
我的宣言:
<permission android:name="my.permission" android:label="my_permission"
android:protectionLevel="signature"/>
<uses-permission android:name="my.permission"/>
...
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:permission="my.permission"
>
<intent-filter>
<action android:name="android.intent.action.ACCEPT_ACTION"/>
</intent-filter>
</receiver>
我无法在我的活动中以编程方式注册接收器,因为它没有链接到活动。我不能使用JobScheduler,因为它与我的用例无关。你有什么想法吗?
谢谢!