यह सवाल मुझे काफी समय से परेशान कर रहा है। इसलिए अब, आखिरकार, मैंने इस मुद्दे की तह तक जाने का फैसला किया।
Playstore के पास अनुमति नाम का एक ऐप है ।READ_PHONE_STATE , जो READ_PHONE_STATE
केवल अनुमति के रूप में अनुरोध करता है, और इसके उपयोग से या इसके बिना उपयोग किए जा सकने वाले सभी डेटा को प्रिंट करने के अलावा और कुछ नहीं करता है। मैंने अपने एलजी ऑप्टिमस 4X पर स्थापित किया है, जो स्टॉक एंड्रॉइड 4.0.3 पर निहित है, और एलबीई का उपयोग करके अनुमति रद्द कर दी है। निम्नलिखित स्क्रीनशॉट के रूप में परिणाम जहां काफी दिलचस्प हैं:
एप्लिकेशन अनुमति द्वारा एकत्रित की गई जानकारी .READ_PHONE_STATE (बड़े वेरिएंट के लिए चित्र पर क्लिक करें)
जैसा कि आप आसानी से देख सकते हैं, यहां तक कि कुछ जानकारी जो बिना अनुमति के दुर्गम है, भले ही स्वतंत्र रूप से सुलभ थी: मेरा मेलबॉक्स नंबर (टिप्पणी: हाँ, यह सही है, मेरे प्रदाता के साथ आपके डिवाइस से डायल करते समय शॉर्टकट है, इसलिए मैं कर सकता हूं स्वतंत्र रूप से इसे प्रदर्शित करें;) पहले स्क्रीनशॉट के अंत में आप देखें:
CALL_STATE_IDLE
। इसलिए कोई भी फोन कॉल इनकमिंग, आउटगोइंग या प्रगति पर नहीं है। किसी भी ऐप को इनकमिंग कॉल पर खुद "बैकग्राउंड" करने की अनुमति की आवश्यकता नहीं है।
यह देखना भी संभव है कि क्या मोबाइल डेटा सक्रिय है ( DATA_DISCONNECTED
स्क्रीनशॉट लेने के दौरान मैं वाईफाई पर था, जैसा कि आप सूचना पट्टी में देख सकते हैं), आप किस देश में हैं, आपका प्रदाता (उस पर कुछ तकनीकी डेटा सहित), चाहे आपके पास एक सिम कार्ड है, या यदि आप रोमिंग में हैं।
केवल चीजें जो सुलभ नहीं हैं, इसलिए डेटा की पहचान कर रहे हैं: IMEI, SIMID, IMSI, और आपका अपना फ़ोन नंबर।
निष्कर्ष: यह अनुमति केवल पहचान के उद्देश्यों के लिए आवश्यक है, और कुछ नहीं।
फिर इतने सारे ऐप्स की जरूरत क्यों है?
- विज्ञापन मॉड्यूल के लिए, सबसे अधिक संभावना 1
- क्योंकि देव ने सोचा कि उसे इसकी आवश्यकता है (जैसा कि यहां कुछ उत्तरों द्वारा बताया गया है) 2
- क्योंकि विचाराधीन ऐप को एंड्रॉइड 1.5 और उससे नीचे (यह पता लगाना आसान है, क्योंकि यह Google Play पर सूचीबद्ध है) पर (भी) चलाया गया है ।
वास्तव में इस क्रम में, आईएमएचओ।
चैट पर डैन की पोस्ट द्वारा 1 नोट :
Google Play नीति अब आपके IMEI को विज्ञापनों के उद्देश्यों के लिए पहचानने से रोकती है। Google-Play-Services द्वारा प्रदान की गई "विज्ञापन आईडी" का उपयोग करने के लिए सभी विज्ञापन पुस्तकालयों को अब अपडेट कर दिया गया है, इसलिए जो भी अभी भी इस उद्देश्य के लिए IMEI का उपयोग करते हैं उन्हें Google को सूचित किया जाना चाहिए।
जैसा कि उपयोगकर्ता के लिए यह बताना मुश्किल है कि ऐप IMEI के लिए क्या उपयोग कर रहा है, आपको डेवलपर को पहले समझाने के लिए कहना चाहिए।
2 एक अन्य डेवलपर ने मुझे केवल एक सूक्ष्म अंतर की ओर इशारा किया: जबकि वर्तमान कॉल स्थिति को पढ़ने के लिए अनुमति की आवश्यकता नहीं है (जैसा कि मैंने बताया है), कॉल के बदलाव पर अधिसूचित होने के लिए श्रोता को पंजीकृत करना आवश्यक हो सकता है। स्थिति (देखें: एंड्रॉइड पर इनकमिंग और आउटगोइंग फोन कॉल का पता लगाना )। जब सिस्टम कॉल करता है , तो स्वचालित रूप से इसे संभालने के साधन प्रतीत होते हैं , जो हमेशा उपयुक्त नहीं हो सकता है: अपनी अलार्म घड़ी के बारे में सोचें। आप शायद यह नहीं चाहते कि स्वचालित रूप से आने वाली कॉल पर रोक दिया जाए - विशेष रूप से तब नहीं जब आपकी प्रोफ़ाइल रिंगर वॉल्यूम "म्यूट" पर सेट हो।onPause
3 फिर से एक सुधार से Dan : आप केवल डिफ़ॉल्ट अतिरिक्त अनुमति प्राप्त करते हैं यदि आपके ऐप का "लक्ष्य" संस्करण 1.5 है। यदि आप बाद के संस्करण को लक्षित करते हैं, लेकिन आपका न्यूनतम संस्करण 1.5 है, तो आपको स्वचालित रूप से अनुमति नहीं मिलती है।
अपडेट
- दिलचस्प है कि इनकमिंग कॉल और संबंधित (टेलीफोनी) का पता लगाने के लिए एक खुला मुद्दा (21504) है
READ_PHONE_STATE
, जो आवश्यक है (और टेलीफोनी), और पहचान विवरण (आईएमईआई, आईएमएसआई, आदि) के लिए एक दूसरी अनुमति। 11/2011 को खोला गया, फिर भी इस पर काम नहीं किया गया। रुचि होने पर इसे स्टार दें :)
- और हाँ, वहाँ एक रास्ता एक ही (पता लगाने आने वाली कॉल) प्राप्त करने के लिए है बिना
READ_PHONE_STATE
अनुमति के, के रूप में जैसे आर्नो Welzel से बताया । आने वाले फोन कॉल के रूप में रिंगर को ट्रिगर किया जाएगा, उस घटना का उपयोग किया जा सकता है onAudioFocusChange()
, जिसके लिए किसी विशेष अनुमति की आवश्यकता नहीं होती है: यदि उसके द्वारा ट्रिगर किया जाता है, तो ऐप कॉलस्टेट (फिर से, किसी विशेष अनुमति के बिना) की जांच कर सकता है कि क्या कोई है? आने वाली कॉल।