2016-03-10 25 views
7

In app TelephonyManager.getDeviceId() aracılığıyla benzersiz bir telefon numarası almak istiyorum. Bunu kullanmak için bu izne ihtiyacım var READ_PHONE_STATE. Sorun, Android'de çalışma zamanı izniyle ilgilidir. 6. Çalışma zamanı izninde açılır iletişim kutusu, kullanıcılara uygulamayı kullanmaları konusunda endişe duyan "Telefon görüşmeleri yapmak ve yönetmek için" izni vermek ister. Ne yapılabilir? Veya bu kadar büyük izni kullanmadan cihaz için başka herhangi bir benzersiz tanımlayıcı alabilir miyim?Android READ_PHONE_STATE çalışma zamanı, telefon görüşmeleri yapmak ve yönetmek ister

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

String deviceId = TM.getDeviceId(); 
+1

"targetSdkVersion 22" yi android 6'da çalıştırmaya başlayabilirsiniz ve çalışma zamanı izinlerini sormak için açılan pencereyi göstermeyecektir. :) – RushDroid

+0

Neden TelephonyManager.getDeviceId() 'yi kullanmak istiyorsunuz? Çoğu durumda [Android'de tanımlayıcılar] (https://plus.google.com/+AndroidDevelopers/posts/DMshVTyzqcL) çok daha iyi. – ianhanniballake

+0

, benzersiz kimliği bulmak için bu [cevap] 'a (http://stackoverflow.com/a/16869491/2801822) başvurabilirsiniz. –

cevap

6

benim app benzersiz cihaz tanımlayıcısı bu kullanıyorum ve herhangi çalışma zamanı iznine gerek yoktur.

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

veya kullanabilirsiniz bu belli izin grubunun gelen bir izin istemek

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

Bilgilendirici, ancak hala asıl soru henüz cevaplanmadı. READ_PHONE_STATE neden bir diyalog metni okumasına neden oluyor? ** "Telefon görüşmeleri yapmak ve yönetmek için" ** –

+2

READ_PHONE_STATE değerini kullandığınızda, gelen ve giden aramaları ve diğer birçok şeyi halledebilirsiniz, böylece telefon görüşmeleri yapıp yönetebilirsiniz. Ancak soru, READ_PHONE_STATE iznini kullanmadan cihaz için benzersiz bir kimlik elde etmekti. başka bir yol istedi. –

3

her izin grubu (onları da talep sağladığı belirtiliyor dan veren bir iletişim kutusu açar tezahürünüzde).

Örnek: Manifest'te READ_PHONE_STATE ve CALL_PHONE için sorun. Çalışma zamanında sadece READ_PHONE_STATE talep edin. İzin iletişim kutusuyla sunun. Her iki izin verildiğini doğrulayın. Tehlikeli izinler ve izin gruplarının

Liste: Bu davranış, Android 6 beri değişmedi ancak gelecekte değiştirilebilir https://developer.android.com/guide/topics/permissions/requesting.html

.

İlgili konular