Отправка трансляции из одного процесса в другой процесс - PullRequest
0 голосов
/ 08 января 2020

Это мое требование.

У меня есть приложение, которое может быть принудительно убито пользователем. Я хочу, чтобы это приложение получало широковещательную рассылку от другого приложения для выполнения какой-либо задачи, даже если оно было принудительно уничтожено.

Я пытаюсь создать другое приложение со службой, которая будет отправлять широковещательную передачу в течение 1 минуты моему первому приложению.

Мое первое приложение должно получать эту трансляцию даже при принудительном уничтожении.

Это то, что я пытаюсь сделать.

в Первом приложении:

    BroadcastReceiver dummy = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("broadcast Received","broadcast Received");
    }
};

 IntentFilter filter = new IntentFilter("com.action.blockapp");
    registerReceiver(dummy,filter);

Во втором приложении.

        Intent intent = new Intent("com.action.blockapp");
        intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        intent.setPackage("com.example.myapplication2");
        sendBroadcast(intent);

Я не могу получить трансляцию, когда мое приложение принудительно уничтожено. Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Вы зарегистрировали свой BroadcastReceiver динамически, в коде. Когда ваше приложение принудительно остановлено, этот код больше не работает, а ваш BroadcastReceiver больше не существует. Он больше не зарегистрирован.

Вам нужно будет создать правильный класс extends BroadcastReceiver и создать запись <receiver> с указанием <intent-filter>, который соответствует вещанию Intent, которое вы вещаете.

0 голосов
/ 08 января 2020

Моя точка зрения. Вам необходимо объявить revice в сервисе, работающем в фоновом режиме. Указанный вами c сервис объявлен в манифесте <receiver android:name=".service.NotifyReceiver" /> </application>

Когда служба запущена. Вы можете получить уведомления от службы, как показано ниже:

Intent intent1 = new Intent(context, NotifyReceiver.class); intent1.setAction(action); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);

Надеюсь, что поможет вам!

...