Устройство должно быть рутировано, чтобы использовать этот метод. Ваше приложение необязательно должно быть системным, поскольку мы можем предоставить себе временный доступ к системному приложению. Это работает в API 21/4.*, не уверен, что еще.
Добавьте <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
в AndroidManifest.xml
Интернет может сказать вам, что ваше приложение должно быть системным приложением, но вы можете игнорировать это, потому что этот метод решает эту проблему, по крайней мере, в этой ситуации.
Используйте этот код (упрощенный для этого поста).
// Grant your app temporary system level like settings access awesomeness
Runtime.getRuntime().exec("su pm grant <yourpackagename> android.permission.WRITE_SECURE_SETTINGS");
// Read the value first to see if you need to set it at all
int curVal = android.provider.Settings.Global.getInt(getContentResolver(),"wifi_suspend_optimizations_enabled",2);
switch( curVal ) {
case 0:
// already disabled
break;
case 1:
// attempt to disable!
boolean success = android.provider.Settings.Global.putInt(getContentResolver(),"wifi_suspend_optimizations_enabled",0);
if( success ) {
// yay worked! maybe check it again to be sure
}
else {
// failed to put
}
break;
case 2:
// Failed to read value, access not granted
break;
}
Я получил много из этого: http://muzso.hu/2013/04/07/change-android-system-settings-eg.-airplane-mode-radios-via-commandline-on-root-phone
Метод, описанный в этом ответе, также можно использовать для изменения других параметров защищенной системы, но может быть сложно отследить точное имя параметра, который нужно изменить. Полезная информация доступна по адресу android. -изменение-системных-настроек-корневого-устройства-из-внутри-приложения, а именно то, что вы можете открыть /data/data/com.android.providers.settings/databases/settings.db
в редакторе sqlite по вашему выбору, чтобы найти таблицу и имена ключей параметр, который вы хотите изменить. wifi_suspend_optimizations_enabled
находится в глобальной таблице, но это не единственная доступная таблица. Другие настройки, кроме оптимизации Wi-Fi, могут потребовать <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
Эта информация может не относиться ко всем устройствам или ситуациям.
person
AlphaCactus
schedule
01.09.2016