2016-04-17 35 views
4

次のコードを使用して輝度を上げています。これは、マシュマロの下にあるデバイスで適切に機能しています。それはMarshmallowでクラッシュしていて、Write-settingsに対して動的な許可を与えるものは何も見つかりませんでした。誰もが私を助けてください考えている。Marshmallowで画面の明るさを変更する権限を与える方法

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 
    Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 255); 

int br = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); 
    WindowManager.LayoutParams lp = getWindow().getAttributes(); 
    lp.screenBrightness = (float) br/255; 
    getWindow().setAttributes(lp); 

エラーログ:

java.lang.SecurityException: com.package was not granted this permission: android.permission.WRITE_SETTINGS. 
    at     android.provider.Settings.isCallingPackageAllowedToPerformAppOpsProtectedOperation(Settings.java:8465) 
    at android.provider.Settings.checkAndNoteWriteSettingsOperation(Settings.java:8338) 
at com.android.providers.settings.SettingsProvider.mutateSystemSetting(SettingsProvider.java:899) 
at com.android.providers.settings.SettingsProvider.insertSystemSetting(SettingsProvider.java:874) 
at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:257) 
at android.content.ContentProvider$Transport.call(ContentProvider.java:398) 
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:283) 
at android.os.Binder.execTransact(Binder.java:453) 
+1

はあなたのエラーログ – Sayem

+0

はそれが仕事http://stackoverflow.com/a/41221852/5488468かもしれこれを試してみてください置きます –

答えて

5

API 23から、彼らはSettings.System.canWrite(context)を使用してWRITE_SETTINGS権限を持っている場合は、ユーザーから動的に依頼する必要があります。ユーザーが設定を承認したい場合は、アクションACTION_MANAGE_WRITE_SETTINGSでインテントを開始する必要があります。あなたはおそらく必要なコードのようなものです、以下:

if (Settings.System.canWrite(context)) 
{ 
    // perform your actions 
} 
else 
{ 
    Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS) 
    .setData(Uri.parse("package:" + getActivity().getPackageName())) 
    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
} 
関連する問題