Способы регистрации вещательного приемника - PullRequest
0 голосов
/ 10 октября 2019

в проекте, над которым я работал, есть использование Broadcast receivers. Теперь эти получатели зарегистрированы в Manifest, а также есть такой метод:

private static void enableComponent(Context context, Class<?> component) {

    ComponentName connectionReceiverComponent = new ComponentName(context, component);
    context.getPackageManager().setComponentEnabledSetting(connectionReceiverComponent, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}

Я немного запутался, потому что с Android 8 мы не можем зарегистрировать получателей в Manifest больше, вместо этого мы должны использовать регистрацию во время выполнения, используя context.registerReceiver(), таким образом, нет необходимости даже помещать получателей в манифест. И все же регистрация, которая использует ComponentName, все еще работает на Android 8 и Android 9. Не могли бы вы объяснить, в чем разница между этими двумя методами, и почему он работает и Android 8 и далее?

1 Ответ

0 голосов
/ 10 октября 2019

В Activity вы можете зарегистрироваться следующим образом.

private BroadcastReceiver receiver;

@Override
public void onCreate(Bundle savedInstanceState){

  IntentFilter filter = new IntentFilter();
  filter.addAction("SOME_ACTION"); 

  receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      //do something based on the intent's action
    }
  };
     registerReceiver(receiver, filter);
}

Или в вашем ActivityManifest

<receiver
 android:name=".ConnectivityBroadcastReceiver">
<intent-filter>
  <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...