onReceive () не вызывается в Android-трансляции-приемнике для статических трансляций - PullRequest
0 голосов
/ 05 марта 2019

Я опираюсь на Broadcastreceiver.Я объявил получатель в файле манифеста и имею класс MyBroadcastReceiver для получения намерения, но я не могу получить никакого намерения.Функция onRecive () никогда не вызывается, например, при изменении режима полета или при подключении или отключении наушников.Ниже приведен код для манифеста.

<receiver
        android:name=".MyBroadCastReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
            <action android:name="android.intent.action.HEADSET_PLUG" />
            <action android:name="android.intent.action.AIRPLANE_MODE" />
        </intent-filter>
    </receiver>

Ниже приведен код для класса BroadCastReceiver.

public class MyBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
    StringBuilder sb = new StringBuilder();
    sb.append("Action: " + intent.getAction() + "\n");
    sb.append("URI: " + intent.toUri(Intent.URI_INTENT_SCHEME).toString() + "\n");
    String log = sb.toString();
    Log.d(TAG, log);
    Toast.makeText(context, log, Toast.LENGTH_LONG).show();
}

}

1 Ответ

0 голосов
/ 05 марта 2019

Если ваше приложение нацелено на 8.0 или выше.Вы больше не можете регистрировать широковещательные приемники для неявных широковещательных сообщений в манифесте, и android.intent.action.AIRPLANE_MODE является неявной широковещательной передачей.Для получения более подробной информации прочитайте это

В качестве временного решения вы все равно можете динамически зарегистрироваться, используя Context.registerReceiver() во время выполнения для неявной и явной трансляции.Но ваше приложение должно быть живым, чтобы получить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...