Ожидание удаленного просмотра Android. Намерение не работает. - PullRequest
0 голосов
/ 09 мая 2019

У меня есть служба, которую мне нужно прекратить с помощью ожидающего намерения из удаленного просмотра, в котором отображается пользовательское уведомление. Я установил ожидающее намерение и зарегистрировал получателя вещания в манифесте. Однако, когда я нажимаю кнопку, ничего не происходит. Приемник вещания является внутренним классом класса обслуживания.

Приемник вещания внутреннего класса:

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

Когда я нажимаю кнопку, ничего не происходит, идентификатор кнопки правильный. Приемник вещания должен быть внутренним классом, потому что у меня есть множество операций, которые я хочу выполнить, если пользователь нажимает кнопку отмены. Как мне заставить это работать. Пожалуйста, помогите.

...