Ich möchte den PendingIntent innerhalb der gleichen Service-Klasse erhalten. Ich habe ein Protokoll in der OnReceive-Methode hinzugefügt, aber es wird nie im LogCat angezeigt.onReceive() wird nach dem Senden von PendingIntent nicht aufgerufen
AndroidManifest:
<service android:name=".UpdateService" android:exported="true">
<intent-filter>
<action android:name="monitoringStop" />
</intent-filter>
</service>`
Updateservice:
public class UpdateService extends Service {
public static final String BROADCAST_NAME = "monitoringStop";
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//Never reached
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//registering
IntentFilter filter = new IntentFilter();
filter.addAction(UpdateService.BROADCAST_NAME);
registerReceiver(receiver, filter);
//creating Intent + PendingIntent
Intent stopIntent = new Intent(this, UpdateService.class);
stopIntent.setAction(BROADCAST_NAME);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(this, 1, stopIntent, PendingIntent.FLAG_ONE_SHOT);
//adding PendingIntent to action
NotificationCompat.Action stopService
= new NotificationCompat.Action(R.drawable.stop, getString(R.string.stop), pendingIntent);
NotificationCompat.Builder notificationBuilder
= new NotificationCompat.Builder(this)//settingText etc.
.addAction(stopService);
startForeground(1,notificationBuilder.build());
return Service.START_STICKY;
}
}
wo senden Sie die Sendung?, Geben Sie den Code – John
In der drittletzten Zeile: '.addAction (stopService);' [link] (https://developer.android.com/reference/android/app/Notification .Builder.html # addAction (android.app.Notification.Action)) –