Получите текущее значение системной настройки и при необходимости измените значение

Я новичок в Android и Java, но активно учусь, просматривая руководства и задавая вопросы. На данный момент я практикуюсь в написании собственного приложения в Android Studio. Я хочу начать с чего-нибудь посложнее. Итак, позвольте мне объяснить, что приложение делает для вас, ребята. Я хочу, чтобы конечный продукт отображал пользовательский интерфейс (очевидно) с кнопкой в ​​середине экрана с надписью «Изменить значение». Однако для меня это не самая сложная часть. Я настроил пользовательский интерфейс, и мне это понравилось. Однако часть, с которой я борюсь, - это часть Java. Благодаря своим исследованиям я не смог найти ничего, связанного с тем, что я пытаюсь достичь.

Я хочу проверить значение строки, расположенной в глобальной таблице («adb_enabled») базы данных настроек Android, и, если она включена («1»), изменить ее на («0»). Я видел руководства о том, как изменить яркость и получить текущее время, но они мне не очень помогли.

Вот мой код для справки:

Settings.Global.putInt( getContentResolver() ,
            Settings.Global.LOCKSCREEN_AD_ENABLED , 0 );

Выполняя приведенный выше код, я получаю следующую ошибку: error: cannot find symbol variable LOCKSCREEN_AD_ENABLED. Кто-нибудь знает, как я могу исправить указанную выше ошибку? Спасибо!

Вы использовали тег javascript, но ваш вопрос связан с Java. Вы создаете приложение для Android или React-Native?

kidA 20.08.2018 23:32

Я создаю собственное приложение.

DataStream3 20.08.2018 23:36

Я случайно использовал тег javascript вместо Java. Я обновил тег, чтобы он был правильным. Прошу прощения за недоразумение.

DataStream3 20.08.2018 23:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
667
1

Ответы 1

Вы можете внести изменения в Системные настройки если ваше приложение является системным. Несистемные приложения, то есть приложения, установленные в разделе данных, не могут изменять системные настройки. Несистемные приложения могут открывать изменение настроек только с помощью намерения или системного пользовательского интерфейса.

Из официального документация:

Global system settings, containing preferences that always apply identically to all defined users. Applications can read these but are not allowed to write; like the "Secure" settings, these are for preferences that the user must explicitly modify through the system UI or specialized APIs for those values.

Если ваше приложение является системным, вы можете использовать приведенный ниже код для внесения изменений (Только для системного приложения):

int adb = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
  adb = Settings.Global.getInt(getApplicationContext().getContentResolver(),
          Settings.Global.ADB_ENABLED, 0);
}
// toggle the USB debugging setting
adb = adb == 0 ? 1 : 0;
Settings.Secure.putInt(getApplicationContext().getContentResolver(),
        Settings.Secure.ADB_ENABLED, adb);

Добавьте ниже разрешения для AndroidManifest.xml:

  <uses-permission android:name = "android.permission.WRITE_SETTINGS"></uses-permission>
  <uses-permission android:name = "android.permission.WRITE_SECURE_SETTINGS"></uses-permission>

Другие вопросы по теме