2016-08-31 2 views
2

В моем приложении я хочу изменить SCREEN_BRIGHTNESS_MODE (и установить другое значение). Я добавил разрешение в AndroidManifest.xml (дважды проверяется с другими параметрами в файле). Значение параметра следует изменить, когда была нажата кнопка.SCREEN_BRIGHTNESS_MODE не работает с разрешением

@Override 
public void onClick(View v) { 
    if(on) { 
     ContentResolver cResolver = getContentResolver(); 
     Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 
     Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, 50); 
    } 
} 

И AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 
    <activity 
     android:name=".FullscreenActivity" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/app_name" 
     android:screenOrientation="landscape" 
     android:theme="@style/FullscreenTheme"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Андроида устройство представляет собой Logic Instrument Fieldbook F1 Android-версия 5.0.1

Когда я пытаюсь выполнить эту команду, я получил следующий Исключение:

08-31 15:29:28.471 16613-16613/com.matodayu.oxo E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.matodayu.oxo, PID: 16613 java.lang.SecurityException: Permission denial: writing to settings requires android.permission.WRITE_SETTINGS 
     at android.os.Parcel.readException(Parcel.java:1540) 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190) 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142) 
     at android.content.ContentProviderProxy.call(ContentProviderNative.java:643) 
     at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1094) 
     at android.provider.Settings$System.putStringForUser(Settings.java:1371) 
     at android.provider.Settings$System.putIntForUser(Settings.java:1476) 
     at android.provider.Settings$System.putInt(Settings.java:1470) 
     at com.matodayu.oxo.FullscreenActivity$4$1.run(FullscreenActivity.java:184) 
     at android.app.Activity.runOnUiThread(Activity.java:5285) 
     at com.matodayu.oxo.FullscreenActivity$4.onClick(FullscreenActivity.java:179) 
     at android.view.View.performClick(View.java:4809) 
     at android.view.View$PerformClick.run(View.java:20123) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5534) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750) 

Может ли кто-нибудь мне помочь?

+0

Возможный дубликат [Невозможно получить разрешение WRITE \ _SETTINGS] (http://stackoverflow.com/questions/32083410/cant-get-write-settings-permission) –

+0

Нет, это не решение –

+0

Что задают настройки .System.canWrite() говорит? – develth

ответ

1

Где вы определили свои разрешения? Внутри манифеста или тега приложения?

Я сделал тестовый проект, и он работает. Это просто провалилось, когда я добавил разрешение внутри неправильного положения - например. тег приложения.

+0

Он не работает как на приложении, так и на ярлыке активности ... Ваше тестовое приложение также работает на уровне API 21? –

+0

Жаль, что это был ложный тест. Я добавил разрешение вниз тега манифеста, и он работает. Спасибо!!!! –

0

Вам необходимо будет указать разрешение & от API 23 &.

Сделайте так, пожалуйста, О вашей деятельности, где вы хотите изменить яркость, разрешите проверку доступа &.

+0

minSdkVersion - 21 (потому что версия Android находится на уровне API 21), а compileVersion - 23 –

+0

Я думаю, этот ответ поможет вам ... http://stackoverflow.com/ вопросы/36674453/how-to-give-permission-for-change-screen-bright-in-marshmallow? rq = 1 – buzzingsilently

+0

Нет, это не так. Метод canWrite требует API-уровня 23 –

Смежные вопросы