#android
#Android
Вопрос:
На Android я пытался получить data_roaming и bluetooth_on, чтобы узнать, включены ли они.
Я использовал следующее:
Cursor cursorCheck = getContentResolver().query(
Settings.Global.CONTENT_URI,
new String[]{Settings.Global.BLUETOOTH_ON},
null, null, null);
assert cursorCheck != null;
cursorCheck.moveToFirst();
for (int i = 0; i < cursorCheck.getCount(); i ) {
Log.i("check1", cursorCheck.getString(0) " ");
cursorCheck.moveToNext();
}
cursorCheck.close();
Однако я получаю следующее исключение:
«java.lang.Исключение IllegalArgumentException: недопустимый столбец: bluetooth_on» / «java.lang.Исключение IllegalArgumentException: недопустимый столбец: data_roaming»
URL-адреса: https://developer.android.com/reference/android/provider/Settings .Глобальный.html#BLUETOOTH_ON
https://developer.android.com/reference/android/provider/Settings .Глобальный.html#DATA_ROAMING
Спасибо
Ответ №1:
Проблема в вашем коде заключается в том, что Settings.Global.BLUETOOTH_ON
это не имя столбца, имя столбца name
— bluetooth_on
это значение внутри этого столбца, поэтому, когда вы выполняете запрос, напишите так :
Cursor cursorCheck = getContentResolver().query(
Settings.Global.CONTENT_URI,
null,
"name=?", new String[]{"bluetooth_on"}, null);
это выполняет поиск в столбце name со bluetooth_on
значением и выдает результат.
Для нескольких добавьте or
подобное name=? or name=?
и добавьте значения, которые вы хотите получить, в массив строк.
Чтобы включить Bluetooth в выключенное состояние, используйте :
cursorCheck.getString(2)
наслаждайтесь!
Комментарии:
1. Спасибо, но я получаю значения, которые не равны 0 или 1, я получаю числа, например, 29, что это значит?
2. Попробуйте изменить
cursorCheck.getString(0)
другие значения, например, 1,2, возможно, вы получите3. @EliorCohen используйте cursorCheck.getString(2) это даст вам правильный
4. Спасибо, но «имя =? или name=?» не работает, почему? Я получаю: Вызвано: java.lang. Исключение IllegalArgumentException: поддерживается SQL: содержимое uri:// some_table/some_property с null где и где аргументы uri:// some_table с именем запроса =? и одно имя в качестве аргумента uri content://some_table с именем запроса=some_name и нулевыми аргументами, но получил — uri:content://settings/global, где:name=? или имя =? Где: [data_roaming, bluetooth_on]
5. Используйте его, когда вам нужно получить два значения