Неявная трансляция в Android Oreo - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть проект, который содержит 6 приложений. Когда одно приложение получает уведомление, другие пять приложений также получают уведомление через неявный приемник вещания.

Но в Android Oreo прием неявного вещания устарел. Поэтому я не могу уведомить другие 5 приложений вместе.

Есть ли в любом случае, что я могу сделать ту же функциональность в Android Oreo?

1 Ответ

0 голосов
/ 29 апреля 2018

Цитирую себя из поста в блоге , связанного с комментарием :

Если вы отправляете неявных трансляций, вы можете преодолеть бан путем вместо этого найти получателей и отправить отдельные явные трансляции:

private static void sendImplicitBroadcast(Context ctxt, Intent i) {
  PackageManager pm=ctxt.getPackageManager();
  List<ResolveInfo> matches=pm.queryBroadcastReceivers(i, 0);

  for (ResolveInfo resolveInfo : matches) {
    Intent explicit=new Intent(i);
    ComponentName cn=
      new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,
        resolveInfo.activityInfo.name);

    explicit.setComponent(cn);
    ctxt.sendBroadcast(explicit);
  }
}

К сожалению, это возвращает отток процесса, и если много разработчиков Для этого могут быть репрессии от Google. Вы можете попробовать ввести некоторые задержка между трансляциями внутри цикла, чтобы распространить влияние. Тем не мение, это начинает становиться хитрее, если вы разложите его более чем на несколько секунд (например, вам сейчас нужны IntentService и WakeLock? что если ваш процесс прерывается до завершения цикла вещания?).

...