Подтвердить что ты не робот

Перезагрузка приемника не работает на телефонах xiaomi

Привет. Мы работаем над приложением android, где мы используем перезагружаемый ресивер, в котором я запускаю несколько сервисов, где я выполняю некоторые действия в сети.

Я понял, что в некоторых устройствах Android, таких как xiaomi etc reboot, приемник не работает.

Раньше я узнал, что в устройствах HTC также не работает, поэтому я добавил еще один фильтр намерений к нему <action android:name="android.intent.action.QUICKBOOT_POWERON" />, после чего он начал работать нормально. Теперь другие телефоны, такие как xiaomi, все еще не работают.

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

<receiver
    android:name="com.xyz.broadcastreceiver.ServiceStarter"
    android:exported="true" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
</receiver>

Спасибо заранее.

4b9b3361

Ответ 1

Телефоны Xiaomi, на которых работает MIUI, имеют встроенный блокировщик приложений для запуска. Возможно, это мешает вашему загрузочному приемнику.

Ответ 2

Хорошо, попробуйте еще раз. У MIUI есть встроенное приложение безопасности. В приложении "Безопасность" есть раздел "Запуск", в котором пользователь может настроить, какое приложение может и какое приложение не может запускаться при запуске. Ваше приложение отключено по умолчанию. Также, если вы изучите свой Logcat, вы можете увидеть сообщение "отказано в доступе" при запуске. Поместите свое приложение вручную в приложения с белым списком, к сожалению, это ваши пользователи могут делать только.

Ответ 3

Добавьте это в свой файл манифеста в фильтр намерений

<action android:name="android.intent.action.BOOT_COMPLETED" />

Ответ 4

Xiomi имеет сообщение об ошибке только за 5 минут после использования этого ресивера
на самом деле загрузки -
http://xiaomi.eu/community/threads/alarmmanager-_wakeup-problem.21430/
Вы можете попробовать и добавить -

android:enabled="true" и android:exported="true"
хотя они должны быть установлены в true по умолчанию из-за системных изменений производителя
на Xiomi android-ориентированной ОС это может отличаться.
Просто обратите внимание на их значение
Так как на android:exported="true"
Позволит другим приложениям получить доступ к вашему ресиверу.

Ответ 5

Попробуйте добавить категорию android.intent.category.DEFAULT. Он обязателен для неявных намерений, но, возможно, он почему-то изменен на телефонах Xiaomi, и намерение не передает один из тестов полученных вашей заявкой.

Ответ 6

Вам нужно добавить

android:enabled="true"

и

android:exported="true"

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

Я думаю, что проблема с ROM Xiaomi.eu, протестированная с помощью dev-версии, я использовал бета-версию MIUI 6.5.19 версии 7.4 на Xiaomi Redmi Note 2 Prime. Я не проверял стабильную версию, которая в настоящее время не может быть загружена для обслуживания сервера. Приемник широковещательной передачи не работает при загрузке.

Попробуйте одно и то же приложение в Xiaomi Mi 4 со стабильным Xiaomi Global ROM, MIUI 7.1.2, после активации автозапуска в диспетчере отлично работали. Перезагрузите и отлично обработайте широковещательный приемник и требуемые разрешения.

Теперь я тестировал с стабильной версией Xiaomi.EU 7.3, MIUI 7.3.2, широковещательный приемник отлично работает при загрузке и перезагрузке. Я зарегистрировал мой приемник с автозапуском в диспетчере безопасности, он не работает в версии ROM. Я не тестировался с Xiaomi Official ROM Global dev.

Мои разрешения:

<receiver android:name=".service.BootBroadcastReceiver"
  android:enabled="true"
  android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    <action android:name="android.intent.action.REBOOT"/>
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</receiver>

Ответ 7

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

Ответ 8

Я предлагаю добавить android: enabled = "true", но он уже был предложен.

Итак, я могу сказать вам, что вы сначала убедитесь, что правильно зарегистрирован приемник или нет. Вы также можете попробовать другую версию его регистрации - это регистрация программно (желательно в onPause() и onResume()) и посмотреть, принимает ли она широковещательное сообщение или нет.

Ответ 9

Существует встроенная функция MIUI, которая предотвращает перезапуск приложений для экономии заряда батареи и оперативной памяти. Вы должны вручную включить опцию Auto Start, чтобы получать трансляции для BOOT_COMPLETED. Перейдите в Настройки> Установленные приложения> Ваше приложение. Затем просто включите опцию автоматического запуска. Нет возможности предотвратить это программно. Вместо этого вы можете информировать пользователей вашего приложения, если они сталкиваются с проблемами во время использования вашего приложения (например, тревога не срабатывает должным образом), они могут включить автоматический запуск из настроек.

enter image description here

Ответ 10

Попробуйте отключить оптимизацию MUIU в настройках разработчика. Это сработало для меня.

1- Перейти в настройки

2- Открыть дополнительные настройки

3- Открыть параметры разработчика

4- Найти Turn on MIUI optimization

5- Отключить кнопку переключения.