2016-03-10 13 views
7

In App möchte ich einzigartige Telefon-ID über TelephonyManager.getDeviceId() erhalten. Um dies zu benutzen, brauche ich diese Erlaubnis READ_PHONE_STATE. Problem ist mit Runtime-Berechtigung auf Android 6. Im Runtime Permission-Popup-Dialog fragt es um Erlaubnis zu erteilen "Um Telefonanrufe zu tätigen und zu verwalten", die unheimliche Benutzer von der Anwendung können. Was kann getan werden? Oder kann ich eine andere eindeutige Kennung für das Gerät erhalten, ohne eine so große Berechtigung zu verwenden?Android READ_PHONE_STATE Runtime-Berechtigung fragt, um Telefonanrufe zu tätigen und zu verwalten

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

String deviceId = TM.getDeviceId(); 
+1

Sie können "targetSdkVersion 22" wird es in Android 6. läuft und es Popup für ask Laufzeitberechtigungen nicht zeigen.Es wird automatisch gewähren Zugriff. :) – RushDroid

+0

Warum möchten Sie 'TelephonyManager.getDeviceId()' verwenden? Es gibt viel bessere [Bezeichner auf Android] (https://plus.google.com/+AndroidDevelopers/posts/DMshVTyzqcL) in den meisten Fällen. – ianhanniballake

+0

können Sie diese [Antwort] (http://stackoverflow.com/a/16869491/2801822) verweisen, um eindeutige ID zu finden. –

Antwort

6

Ich benutze dies als eindeutige Gerätekennung in meiner app und ich brauche keine Laufzeit-Zugriffsrechte.

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

oder Sie können diese verwenden

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

Informativ, aber Kernfrage oben ist noch nicht beantwortet. Warum 'READ_PHONE_STATE' zu einem Dialogtext führt **" Um Anrufe zu tätigen und zu verwalten "** –

+2

seit der Verwendung von READ_PHONE_STATE können Sie eingehende und ausgehende Anrufe und viele andere Dinge verarbeiten, also Anrufe tätigen und verwalten. Aber die Frage war, wie man eine eindeutige ID für das Gerät erhält, ohne die Berechtigung READ_PHONE_STATE zu verwenden. er fragte nach einem anderen Weg. –

3

Vorstellung für eine Erlaubnis aus einer bestimmten Berechtigungsgruppe öffnet einen Dialog, aus der Gruppejede Erlaubnis gewährt (sofern Sie sie auch angefordert in Ihrem Manifest).

Beispiel: Fragen Sie in Manifest nach READ_PHONE_STATE und CALL_PHONE. Fordern Sie zur Laufzeit nur READ_PHONE_STATE an. Erhalte den Erlaubnis-Dialog. Stellen Sie sicher, dass Ihnen beide Berechtigungen erteilt wurden.

Liste der gefährlichen Berechtigungen und Berechtigungsgruppen: https://developer.android.com/guide/topics/permissions/requesting.html

Dieses Verhalten seit Android 6 hat sich nicht geändert, sondern kann auch in Zukunft geändert werden.

Verwandte Themen