BroadcastReceiver for push notification with android O

1.6k views Asked by At

I'm switching my target-sdk to 26 (android O) and due to the new background execution limits my broadcast receiver is not working anymore. According to Google documentation

Broadcasts that require a signature permission are exempted from this >restriction, since these broadcasts are only sent to apps that are signed >with the same certificate, not to all the apps on the device.

So I added a custom permission in my manifest. It's working when I trigger the broadcast programmatically sendBroadcast(intent, "my.permission") but I can't find a way to make it work on an action button on a push notification because I don't know how to specify the permission

notificationBuilder.addAction(drawable, "title", pendingIntent);

and my pendingIntent is setup like this

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);

My Manifest:

<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>

I cannot register the receiver programmatically in my activity, because it's not linked to an activity. I cannot use a JobScheduler because it's not relevant for my usecase. Do you have an idea?

Thanks!

0

There are 0 answers