2016-03-10 6 views
7

ऐप में मैं TelephonyManager.getDeviceId() के माध्यम से अद्वितीय फ़ोन आईडी प्राप्त करना चाहता हूं। इसका उपयोग करने के लिए मुझे इस अनुमति की आवश्यकता है READ_PHONE_STATE। समस्या एंड्रॉइड पर रनटाइम अनुमति के साथ है 6. रनटाइम अनुमति पॉपअप संवाद में, यह अनुमति देता है "फ़ोन कॉल करने और प्रबंधित करने के लिए" जो उपयोगकर्ताओं को ऐप का उपयोग करने से डरा सकता है। क्या किया जा सकता है? या क्या मुझे ऐसी बड़ी अनुमति के बिना डिवाइस के लिए कोई अन्य अद्वितीय पहचानकर्ता मिल सकता है?Android READ_PHONE_STATE रनटाइम अनुमति फ़ोन कॉल बनाने और प्रबंधित करने के लिए कहती है

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

String deviceId = TM.getDeviceId(); 
+1

आप "targetSdkVersion 22" सेट कर सकते हैं, यह एंड्रॉइड 6 में चल रहा है। और यह रनटाइम अनुमतियों के लिए पॉपअप नहीं दिखाएगा। यह स्वचालित रूप से पहुंच प्रदान करेगा। :) – RushDroid

+0

आप 'TelephonyManager.getDeviceId()' का उपयोग क्यों करना चाहते हैं? ज्यादातर मामलों में [एंड्रॉइड पर पहचानकर्ता] (https://plus.google.com/+AndroidDevelopers/posts/DMshVTyzqcL) बहुत बेहतर हैं। – ianhanniballake

+0

अद्वितीय आईडी खोजने के लिए आप इसे [answer] (http://stackoverflow.com/a/16869491/2801822) देख सकते हैं। –

उत्तर

6

मैं इसे अपने ऐप में एक अद्वितीय डिवाइस पहचानकर्ता के रूप में उपयोग कर रहा हूं और मुझे किसी भी रन टाइम अनुमति की आवश्यकता नहीं है।

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

या आप उपयोग कर सकते हैं इस

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

जानकारीपूर्ण, लेकिन अभी भी ऊपर मूल प्रश्न का उत्तर नहीं दिया गया है। क्यों READ_PHONE_STATE' रीड_PHONE_STATE का उपयोग करने के बाद ** "कॉल कॉल करने और प्रबंधित करने के लिए ** ** –

+2

पर एक संवाद पाठ पढ़ने की ओर जाता है, तो आप इनकमिंग और आउटगोइंग कॉल और कई अन्य चीजों को संभाल सकते हैं, इसलिए यह फोन कॉल करने और प्रबंधित करने का कहता है। लेकिन सवाल यह था कि READ_PHONE_STATE अनुमति का उपयोग किए बिना डिवाइस के लिए अद्वितीय आईडी कैसे प्राप्त करें। उसने एक और तरीके से पूछा। –

3

एक निश्चित अनुमति समूह से एक अनुमति के लिए पूछना एक संवाद है कि हर अनुमति से समूह (बशर्ते कहा आप भी उन्हें अनुरोध किया अनुदान खोलता है आपके प्रकट में)।

उदाहरण: मेनिफेस्ट में READ_PHONE_STATE और CALL_PHONE के लिए पूछें। रनटाइम पर केवल READ_PHONE_STATE का अनुरोध करें। अनुमति संवाद के साथ प्रस्तुत करें। सत्यापित करें कि आपको दोनों अनुमतियां दी गई हैं।

खतरनाक अनुमतियाँ और अनुमति समूहों की सूची: https://developer.android.com/guide/topics/permissions/requesting.html

यह व्यवहार एंड्रॉयड 6 के बाद से नहीं बदला है लेकिन भविष्य में बदला जा सकता है।

संबंधित मुद्दे