У меня есть служба, которую мне нужно прекратить с помощью ожидающего намерения из удаленного просмотра, в котором отображается пользовательское уведомление. Я установил ожидающее намерение и зарегистрировал получателя вещания в манифесте. Однако, когда я нажимаю кнопку, ничего не происходит. Приемник вещания является внутренним классом класса обслуживания.
Приемник вещания внутреннего класса:
public class CancelDownload extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive: cancel intent");
if(Objects.equals(intent.getAction(), VIDEODOWNLOADACTIONS.STOP)){
stopSelf();
CustomModel model = CustomModel.getInstance();
if (model != null) {
model.changeState();
}
notificationManager.cancel(notificationId);
database.setDownloadFileAsFailed(fileID);
File emptyfile = new File(destinationPath);
if (emptyfile.exists()) {
emptyfile.delete();
}
}
}
}
Manifest:
<receiver android:name=".data.VideoDownloadService$CancelDownload"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="my.action.stopdownload"/>
</intent-filter>
</receiver>
Код уведомления:
RemoteViews downloadViews = new RemoteViews(context.getPackageName(), R.layout.notificaition_layout);
Intent cancelIntent = new Intent(context, VideoDownloadService.CancelDownload.class);
cancelIntent.setAction(VIDEODOWNLOADACTIONS.STOP);
PendingIntent cancelPendingIntent = PendingIntent.getBroadcast(context, 0, cancelIntent, PendingIntent.FLAG_ONE_SHOT);
// пробуем оба здесь
downloadViews.setPendingIntentTemplate(R.id.cancel,cancelPendingIntent);
downloadViews.setOnClickPendingIntent(R.id.cancel,cancelPendingIntent);
// установка вида уведомления
builder.setContent(downloadViews)
.setCustomBigContentView(downloadViews);
Когда я нажимаю кнопку, ничего не происходит, идентификатор кнопки правильный. Приемник вещания должен быть внутренним классом, потому что у меня есть множество операций, которые я хочу выполнить, если пользователь нажимает кнопку отмены.
Как мне заставить это работать. Пожалуйста, помогите.