«Список настройки оболочки ADB Global» не работает программатически в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 «Список настройки оболочки ADB Global» не работает программатически в Android

Сообщение Anonymous »

Я хочу прочитать глобальные настройки программно в Android.

Использование ADB на Android Studio команда списка работает отлично: < /p>
adb shell settings list global
< /code>
и возвращает список настроек: < /p>
...
sound_trigger_detection_service_op_timeout=15000
sqlite_compatibility_wal_flags=
stay_on_while_plugged_in=7
subscription_mode=0
...
< /code>
, а также up Works, как и ожидалось < /p>
adb shell settings put global stay_on_while_plugged_in 0
< /code>
Проблема в том, когда я хочу сделать это программно. private void getCurrentSettings(){
if (Settings.System.canWrite(this)){
try {
String command = "settings list global";

Process shell = Runtime.getRuntime().exec(command);
shell.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(shell.getInputStream()));
String line;

while ((line = br.readLine()) != null) {
Log.d("settings", line);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:"+getApplicationContext().getPackageName()));
startActivity(intent);
}
}
< /code>
Обновление 30 сентября 2021: < /strong>
благодаря комментарию @tdg я могу получить ошибку команды EXEC.

Это ошибка в случае команды списка: »« Список настроек »< /em> < /p>
Exception occurred while executing 'list':
java.lang.SecurityException: Permission Denial: getCurrentUser() from pid=32475, uid=10603 requires android.permission.INTERACT_ACROSS_USERS
at com.android.server.am.UserController.getCurrentUser(UserController.java:2168)
at com.android.server.am.ActivityManagerService.getCurrentUser(ActivityManagerService.java:18772)
at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:259)
at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98)
at android.os.ShellCommand.exec(ShellCommand.java:44)
at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49)
at android.os.Binder.shellCommand(Binder.java:929)
at android.os.Binder.onTransact(Binder.java:813)
at android.os.Binder.execTransactInternal(Binder.java:1159)
at android.os.Binder.execTransact(Binder.java:1123)

Это ошибка в случае команды GET: »Получите глобальную stain_on_while_plugged_in"
Exception occurred while executing 'get':
java.lang.SecurityException: Permission Denial: getCurrentUser() from pid=32124, uid=10603 requires android.permission.INTERACT_ACROSS_USERS
at com.android.server.am.UserController.getCurrentUser(UserController.java:2168)
at com.android.server.am.ActivityManagerService.getCurrentUser(ActivityManagerService.java:18772)
at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:259)
at android.os.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:98)
at android.os.ShellCommand.exec(ShellCommand.java:44)
at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:49)
at android.os.Binder.shellCommand(Binder.java:929)
at android.os.Binder.onTransact(Binder.java:813)
at android.os.Binder.execTransactInternal(Binder.java:1159)
at android.os.Binder.execTransact(Binder.java:1123)


Подробнее здесь: https://stackoverflow.com/questions/693 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»