web-dev-qa-db-fra.com

Refus de l'autorisation d'Android 6.0: requiert l'autorisation Android.permission.WRITE_SETTINGS

Comme vous pouvez le voir dans mon manifeste ci-dessous, j'ai ajouté l'autorisation suivante: Qu'est-ce qui me manque?

<uses-permission-sdk-m Android:name="Android.permission.WRITE_SETTINGS" />
16
Dobin

Dans l'API 23 ou supérieure, l'utilisateur doit autoriser manuellement cette autorisation; vous pouvez vérifier en appelant- 'Paramètres.System.canWrite' ci-dessous. 

           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (Settings.System.canWrite(context)) {
                    // Do stuff here
                }
                else {
                    Intent intent = new Intent(Android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
                    intent.setData(Uri.parse("package:" + getActivity().getPackageName()));
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            }
51
japanjot singh

WRITE_SETTINGS sous Android 6. requestPermissions ne fonctionne pas, mais CommonsGuy a fourni une solution de contournement ici: https://stackoverflow.com/a/32083622/238753

4
Sam
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (!Settings.System.canWrite(getApplicationContext())) {
            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName()));
            startActivityForResult(intent, 200);
        }
    }

cela fonctionne comme un charme. 

3
Mihir Patel

Ceci est un cas particulier: niveau de permision: signature,

Si l'application cible une API de niveau 23 ou supérieur, l'utilisateur de l'application doit explicitement accorder cette autorisation à l'application via un écran de gestion des autorisations. 

L'application demande l'approbation de l'utilisateur en envoyant une intention avec l'action ACTION_MANAGE_WRITE_SETTINGS. 

L'application peut vérifier si elle dispose de cette autorisation en appelant Settings.System.canWrite (). 

0
Feng.G
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.M) {
            boolean settingsCanWrite = Settings.System.canWrite(this);

            if(!settingsCanWrite) {
                Toast.makeText(this, "Require Permission to Handle Screen Brightness", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                startActivity(intent);
            }
        }
0