BroadcastReceiver не получает, когда приложение закрыто

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

вот мой КОД:

Java-класс MyReceiver:

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"BroadCast Trigger",Toast.LENGTH_SHORT).show();
    }
 }

Также код MyManifest:

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
</receiver>

person Araz Mohammadnejad    schedule 12.11.2017    source источник
comment
Я протестировал один и тот же код на эмуляторе Android (под управлением Android 6) и на своем устройстве (под управлением 7.1). Он работает нормально на обоих из них.   -  person thedarkpassenger    schedule 12.11.2017
comment
спасибо за ваш ответ, я протестировал его на своем телефоне Huawei P9 (Android 6), но я не получил ответа, когда приложение не запущено, оно работает для меня, когда приложение запущено спереди или в фоновом режиме.   -  person Araz Mohammadnejad    schedule 12.11.2017
comment
Возможно, это специфика устройства. Попробуйте в эмуляторе   -  person thedarkpassenger    schedule 12.11.2017
comment
позвольте мне попробовать это и отзывы, спасибо   -  person Araz Mohammadnejad    schedule 12.11.2017
comment
в HTC работает, как то странно!!!   -  person Araz Mohammadnejad    schedule 12.11.2017
comment
как я снова исследовал, все устройства huawei имеют эту проблему и не позволяют приложениям использовать широковещательный приемник после закрытия.   -  person Araz Mohammadnejad    schedule 12.11.2017


Ответы (2)


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

        if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
        // Do Needed Action
    }
person Araz Mohammadnejad    schedule 18.11.2017

Я столкнулся с такой же проблемой на Huawei Honor с Android 7. На устройствах Sony и ZTE BroadcastReceiver работает должным образом. Но на Хонор он работает какое-то время и вдруг перестает. Я обнаружил, что проблема не связана с перезагрузкой. Я перезагружаю устройство и после этого работает вещательный приемник. Но иногда останавливается без перезагрузки.

Сначала я добавляю свое приложение в защищенный список в соответствии с этим решением: Настройка защищенных приложений на телефонах Huawei и как с ней работать

Но это не помогло :(

Затем я добавляю в свое приложение фальшивую службу специальных возможностей в соответствии с этой рекомендацией: android/41627296">Broadcast Receiver не работает после перезагрузки устройства в Android

И проблема была решена!

person Anton Ganichev    schedule 18.06.2018
comment
Добро пожаловать в Stack Overflow! Хотя ссылки и являются отличным способом обмена знаниями, они не дадут ответа на вопрос, если в будущем они сломаются. Добавьте к своему ответу основное содержание ссылки, которая отвечает на вопрос. Если содержание слишком сложное или слишком большое, чтобы поместиться здесь, опишите общую идею предлагаемого решения. Не забывайте всегда сохранять ссылку на веб-сайт исходного решения. См.: Как написать хороший ответ? - person sɐunıɔןɐqɐp; 18.06.2018