BroadcastReceiver用于Android O的推送通知

时间:2017-08-30 09:20:57

标签: android push-notification android-pendingintent android-broadcastreceiver android-8.0-oreo

我正在将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,因为它与我的用例无关。你有什么想法吗?

谢谢!

0 个答案:

没有答案
相关问题