Dans l'application, je souhaite obtenir un identifiant unique via TelephonyManager.getDeviceId()
. Pour utiliser cela, j'ai besoin de cette permission READ_PHONE_STATE
. Le problème est avec l'autorisation d'exécution sur Android 6. Dans la boîte de dialogue contextuelle d'autorisation d'exécution, il vous est demandé d'accorder l'autorisation "Faire et gérer des appels téléphoniques" , ce qui peut dissuader les utilisateurs d'utiliser l'application. Ce qui peut être fait? Ou puis-je obtenir un autre identifiant unique pour le périphérique sans utiliser une telle permission?
TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = TM.getDeviceId();
J'utilise ceci comme identifiant unique de périphérique dans mon application et je n'ai besoin d'aucune autorisation d'exécution.
String Android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.Android_ID);
ou vous pouvez utiliser ceci
String uuid = UUID.randomUUID().toString();
Demander une permission à un certain groupe de permissions ouvre une boîte de dialogue accordant à toutes les permissions de ce groupe (à condition que vous les ayez également demandées dans votre manifeste).
Exemple: demandez READ_PHONE_STATE
et CALL_PHONE
dans le manifeste. Demander juste READ_PHONE_STATE
au moment de l'exécution. Obtenez présenté avec le dialogue d'autorisation. Vérifiez que les deux autorisations vous ont été accordées.
Liste des autorisations dangereuses et des groupes d’autorisations: https://developer.Android.com/guide/topics/permissions/requesting.html
Ce comportement n'a pas changé depuis Android 6 mais peut être modifié à l'avenir.