0

Je ne suis pas sûr de bien comprendre cela. Donc, pour la version < = 21 API, nous pouvons simplement utiliser AndroidManifest.xml pour demander des autorisations, mais Lollipop et les API supérieures, nous avons la fonctionnalité Requesting permission on runtime. Donc, je l'utilise avec ce code simpe:Les autorisations sont accordées par défaut

if (Build.VERSION.SDK_INT >= 23) { 
    mPermissionsToBeAsked.clear(); 
    for (String permission : AudioRecordingThread.PERMISSIONS_NEEDED) { 
     if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { 
      mPermissionsToBeAsked.add(permission); 
     } 
    } .... 

Ensuite, si cette liste est pas vide je les demande:

if (mPermissionsToBeAsked.size() > 0) { 
    requestPermissions(mPermissionsToBeAsked.toArray(new String[0]), AUDIO_PERMISSIONS_REQUEST_CODE); 
} 

Mais, pour une raison quelconque, sur les appareils, par exemple , comme Samsung Galaxy S7 avec Android 6.0.1, toutes les autorisations soulignées par défaut lorsque l'application est installée. Donc, je veux savoir pourquoi, MAIS, il y a un plus grand sujet, quand je vais à mon application dans le Gestionnaire d'applications et manuellement en supprimant la permission de microphone, dans l'application checkSelfPermission(permission) est toujours retourné GRANTED. Ainsi, les questions suivantes:

  1. Pourquoi appareils avec le niveau de l'API Lollipop et plus toutes les autorisations sont accordées par défaut encore et code ci-dessus ne rien ajouter dans mPersmissionToBeAsked?
  2. Pourquoi si je supprime manuellement l'autorisation avec le titre MICROPHONE dans le gestionnaire d'application checkSelfPermission(android.permission.RECORD_AUDIO)renvoie toujours GRANTED?

Répondre

1

Juste Cross vérifier dans votre application fichier gradle la version targetsdk est supérieure à 22.

defaultConfig { 
     // ----- 
     targetSdkVersion 23 
     //---- 
    } 

Si elle est inférieure à 23 que l'autorisation sera automatiquement accordée à votre application.

1

Tout d'abord, c'est Android M et au-dessus qui gère les autorisations. Et cela signifie que vous devriez avoir

targetSdkVersion 23 

ou ci-dessus. Sinon, le système considère que le développeur n'a pas ciblé cette version, ce qui signifie que le développeur ne vérifie pas les autorisations.