На некоторых телефонах Samsung с Android 6 или более поздних версий отсутствует android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS.

Мое приложение должно позволять пользователям отключать режим ожидания для моего приложения, поэтому для этого приложение должно открываться android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS, но я получаю android.content.ActivityNotFoundException при попытке открыть это намерение на некоторых телефонах Samsung, таких как Galaxy A5.

Есть ли на этих телефонах аналог? А как насчет других телефонов?

Спасибо.

Изменить: я просто хочу внести ясность, я пытаюсь найти фактический экран настроек на телефонах Samsung, таких как A5, а не только как открыть настройки. Мне нужно направить пользователей в нужное место.

Изменить: чтобы уточнить, мы не нашли настройки на этом телефоне Samsung, чтобы isIgnoringBatteryOptimizations() возвращал true. Это мой главный вопрос: какие настройки нужно изменить на этом телефоне, чтобы они стали true.


person casolorz    schedule 25.01.2021    source источник


Ответы (2)


Samsung Galaxy A5 работал на трех ОС:

Android 6.0.1, Android 7.0, Android 8.0.0 (GFX Bench)

В android.settings. IGNORE_BATTERY_OPTIMIZATION_SETTINGS была добавлена ​​активность в API. не удалялся впоследствии. По какой-то причине Samsung никогда не исправляла эту ошибку. Единственное решение - вывести пользователя на экран настроек системы. См. Следующее решение:

https://github.com/kontalk/androidclient/commit/be78119687940545d02/commit/be78119687940540545d02/commit/be78119687940545d08

РЕДАКТИРОВАТЬ

После неправильного понимания вопроса и разъяснения OP я добавил потенциальное решение для определения того, к какой настройке мощности необходимо получить доступ.

Если вы еще этого не сделали, убедитесь, что вы используете android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Обязательно добавьте REQUEST_IGNORE_BATTERY_OPTIMIZATIONS в свой манифест перед использованием этого действия.

Действие действия: попросите пользователя разрешить приложению игнорировать оптимизацию заряда батареи (то есть поместить их в белый список приложений, показанных ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS). Чтобы приложение могло использовать это, оно также должно иметь разрешение Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.

Это должно привести пользователя к нужному варианту.

person EMcCrary    schedule 04.02.2021
comment
Но какие настройки им нужно отключить на Samsung Galaxy A5? один пользователь, который у меня есть с этим телефоном, продолжает получать false за isIgnoringBatteryOptimizations() после изменения всех настроек экономии заряда батареи, которые они могли найти. - person casolorz; 04.02.2021
comment
Извините! Я, должно быть, неправильно понял вопрос. Я обновляю свой ответ, но все еще не уверен, потому что не уверен, что вы реализовали, а что нет. - person EMcCrary; 05.02.2021
comment
У Google очень ограниченный список функций, которые приложение должно предоставить, чтобы получить разрешение на использование фактического разрешения на оптимизацию заряда батареи в манифесте. Фактически, они приостановят ваше приложение, если вы это сделаете. Так что я могу использовать только то, что вы делаете после вашего первого try/catch, и я уже это делаю. Моя проблема связана с пользователями, которые окажутся на третьем catch в вашем коде, в некоторых случаях очень трудно найти правильное место для этого параметра. В частности, на A5 мы его до сих пор не нашли. - person casolorz; 06.02.2021

Если у вас есть один из этих телефонов (возможно, виртуальный из некоторых онлайн-сервисов), вы можете запустить команду adb, чтобы найти выполняемые действия, таким образом вы можете проверить намерение и, возможно, вам разрешено вызывать его:

adb shell dumpsys activity activities

person Ultimo_m    schedule 09.02.2021
comment
Наша проблема в том, что мы не нашли настройку. Даже после того, как мы перевернули все найденные нами настройки, isIgnoringBatteryOptimizations() продолжает оставаться ложным. - person casolorz; 10.02.2021
comment
@casolorz найдите приложение, которое делает то, что вы хотите (или использует эту функцию), и декомпилируйте его, чтобы проверить, как они это делают, возможно, вам нужно проверить приложения samsung, установленные на этом телефоне - person Ultimo_m; 10.02.2021