Этот код:
Settings.System.putInt(context.getContentResolver(), POWER_KEY_DEFINITION, 1);
Генерирует ошибку:
java.lang.IllegalArgumentException: You cannot keep your settings in the secure settings.
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1595)
at android.provider.Settings$System.putStringForUser(Settings.java:1965)
at android.provider.Settings$System.putIntForUser(Settings.java:2070)
at android.provider.Settings$System.putInt(Settings.java:2064)
at com.example.sasho.timer2.MainActivity$1$1.run(MainActivity.java:155)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:892)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
Другой SO вопрос дает ответ на ту же ошибку, они говорят: «Settings.System для настроек, определяемых платформой. Вы не можете поместить туда произвольные настройки, такие как test.hemant.».
Но дело в том, что в моем случае это не произвольная настройка системы, которую я устанавливаю. Я знаю, что он существует в окне ТВ, над которым я работаю, потому что прежде чем пытаться каким-либо образом перезаписать или создать его, я проверил с помощью метода Settings.getInt, чтобы получить его значение, и действительно, оно было. Я использовал пульт дистанционного управления, чтобы изменить соответствующую настройку, и getInt отразил изменение. Как я могу устранить ошибку? У меня есть разрешения WRITE_SETTINGS и WRITE_SECURE__SETTINGS в моем манифесте.