2016-03-10 7 views
7

In app, desidero ottenere un ID telefono univoco tramite TelephonyManager.getDeviceId(). Per utilizzare questo ho bisogno di questa autorizzazione READ_PHONE_STATE. Il problema è con l'autorizzazione di runtime su Android 6. Nel dialogo popup di autorizzazione di runtime, chiede di concedere l'autorizzazione "Per effettuare e gestire le chiamate telefoniche" che possono spaventare gli utenti dall'utilizzo di app. Cosa si può fare? Oppure posso ottenere qualsiasi altro identificativo univoco per il dispositivo senza utilizzare un permesso così grande?L'autorizzazione di runtime Android READ_PHONE_STATE richiede di effettuare e gestire le chiamate telefoniche

TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

String deviceId = TM.getDeviceId(); 
+1

è possibile impostare "targetSdkVersion 22" che verrà eseguito in Android 6. e non mostrerà popup per chiedere runtime permissions.it sarà automaticamente concedere l'accesso. :) – RushDroid

+0

Perché vuoi usare 'TelephonyManager.getDeviceId()'? Ci sono molto meglio [identificatori su Android] (https://plus.google.com/+AndroidDevelopers/posts/DMshVTyzqcL) nella maggior parte dei casi. – ianhanniballake

+0

puoi fare riferimento a questa [risposta] (http://stackoverflow.com/a/16869491/2801822) per trovare un ID univoco. –

risposta

6

Sto usando questo come un identificatore univoco del dispositivo nella mia app e non ho bisogno di alcun permesso fase di esecuzione.

String android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(), 
       Settings.Secure.ANDROID_ID); 

o È possibile utilizzare questo

String uuid = UUID.randomUUID().toString(); 
+0

Non è ancora stata data una domanda informativa ma ancora centrale. Perché "READ_PHONE_STATE" apre un testo di dialogo che legge ** "Per effettuare e gestire le telefonate" ** –

+2

da quando si utilizza READ_PHONE_STATE, puoi gestire le chiamate in entrata e in uscita e molte altre cose, quindi dire effettuare e gestire le chiamate telefoniche. ma la domanda era come ottenere un ID univoco per il dispositivo senza utilizzare l'autorizzazione READ_PHONE_STATE. ha chiesto un altro modo. –

3

Chiedere un permesso da un certo gruppo di autorizzazione apre una finestra di dialogo che concede ogni autorizzazione di detto gruppo (a condizione che anche loro richiesto nel tuo manifest).

Esempio: chiedere READ_PHONE_STATE e CALL_PHONE in manifest. Richiedi solo READ_PHONE_STATE in fase di esecuzione. Viene presentato con la finestra di dialogo delle autorizzazioni. Verifica di aver ottenuto entrambe le autorizzazioni.

Elenco dei permessi pericolose e gruppi di autorizzazione: https://developer.android.com/guide/topics/permissions/requesting.html

Questo comportamento non è cambiato da quando Android 6, ma può essere modificata in futuro.

Problemi correlati