0

私のアプリケーションを通じてシステム/電話の明るさを変更しようとしています。このため私は許可を求める必要があります( "危険な許可")。私は正しい方法を実行したかどうかはわかりませんが、常に許可が拒否されるため、これは動作していないようです。危険な許可を求める//マニフェストAndroidスタジオ危険な許可

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




    public void changeScreenBrightness(float brightness) { 
     mBrightness = brightness; 
     if (systemBrightness) { 
      if (!Settings.System.canWrite(this)) { 
       Intent i = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); 
       startActivity(i); 
      } else { 
       Settings.System.putInt(mContentResolver, Settings.System.SCREEN_BRIGHTNESS, (int) (mBrightness * 255)* preset); 
      } 
     } else { 
      WindowManager.LayoutParams mLayoutParams = mWindow.getAttributes(); 
      mLayoutParams.screenBrightness = mBrightness * preset; 
      mWindow.setAttributes(mLayoutParams); 
     } 
    } 
+0

エラーなし表示で書かれたすべてはあなたが 'マニフェストでWRITE_SETTINGS'許可を置くfar..did? – Pzy64

+0

質問にマニフェストのアクセス許可を追加しました – Amar

+0

本当に誰も正しい方向を指摘できませんか? – Amar

答えて

1

public void switches() { 
      if (systemBrightness) { 
       ActivityCompat.requestPermissions(MainActivity.this, 
         new String[]{Manifest.permission.WRITE_SETTINGS}, 
         1); 
       Toast.makeText(this, "Changed to system brightness: changing the “system brightness” is permanent", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(this, "Changed to screen brightness: ", Toast.LENGTH_SHORT).show(); 
      } 
     } 


public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case 1: { 

       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 
       } else { 

        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
        Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show(); 
       } 
       return; 
      } 

      // other 'case' lines to check for other 
      // permissions this app might request 
     } 
    } 

は、脆弱なアクセス許可とは異なる方法で処理されます。できるかどうか確認するには、Settings.System.canWrite(Context)メソッドを使用する必要があります。そしてstartActivityForResultを呼び出すことにより、システムに適切なIntentを送信しない場合:

public boolean checkWriteSettingsPermission() { 
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
     return true; 
    } 
    if (!Settings.System.canWrite(getContext())) { 
     Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, 
      Uri.parse("package:" + getPackageName())); 
     startActivityForResult(intent, REQUEST_CODE); 
     return false; 
    } else { 
     return true; 
    } 
} 

documentation

+0

私は意図の許可で私の質問を編集しました。 "Aviability"というタイトルの新しいインテント/ウィンドウを今起きています。アプリケーションがシステム画面の明るさを変更できるようにする許可 – Amar

+0

自動明るさが設定されていますか?この回答を確認してください:https://stackoverflow.com/a/36001592/6507689 –

+0

はい、これは時代遅れの回答です。アプリケーションは23マニフェストの許可宣言は動作しませんか? – Amar

関連する問題