फ़ोन एप्लिकेशन और पहचान को पढ़ने के लिए इतने सारे अनुप्रयोगों की अनुमति की आवश्यकता क्यों है?


88

क्यों कई अनुप्रयोगों को फोन की स्थिति और पहचान को पढ़ने के लिए अनुमति की आवश्यकता होती है ?. विशेष रूप से:

Phone calls
   read phone state and identity

उदाहरण के लिए क्विकपीडिया एक विकिपीडिया पोर्टल है, लेकिन यह फोन तक पहुंच चाहता है। इसके लिए स्पष्टीकरण क्या है?

यहाँ छवि विवरण दर्ज करें


यह वास्तव में नहीं है, "हाँ, हाँ, इस ऐप के पास एसएमएस भेजने और आपकी पीठ के पीछे एक प्रीमियम नंबर बजाने की अनुमति है" जिसे लोग मानते हैं । @ नीचे ईसाई के जवाब ने सिर पर कील ठोक दी! यह बहुत सारे मामलों में वैध है, और अक्सर, देवता नीचे अनुमतियों को भुनाने के बारे में भूल जाते हैं (शायद एक ऐप के विकास के शुरुआती दिनों से एक पकड़-ओवर)।
t0mm13b

1
@ t0mm13b मुझे नहीं लगता कि तकनीकियों और गोपनीयता गीक्स (स्वयं शामिल) के बाहर कम अनुमतियों की बहुत मांग है। इसलिए यदि ऐप निर्माता इसे केवल अनुमतियों के पूर्ण सूट की आवश्यकता का मानदंड बनाते हैं , तो उपभोक्ता मान लेंगे कि बहुत सारी अनुमतियां किसी भी ऐप के लिए ठीक हैं। सरकार उन पर न्यूनतम अनुमतियों का उपयोग करने के लिए दबाव नहीं डाल रही है, और अब तक बाजार उन पर दबाव नहीं बना रहा है। यानी बहुत सारी अनुमतियों के लिए ऐप्स के लिए बहुत कम लागत है।
user29020

जवाबों:


59

यह ऐप को एक अद्वितीय आईडी ( IMEI नाम का एक फोन पहचानकर्ता ) पढ़ने की अनुमति देता है जो आपके फोन से जुड़ा हुआ है।

इसलिए यह कॉपी-सुरक्षा या उपयोगकर्ताओं की संख्या को ट्रैक करने के प्रयास में मदद कर सकता है।


3
फ़ोन की एक यूनिक आईडी प्राप्त करने के बारे में इस SO प्रश्न को देखें, ऐसा लगता है कि (वर्तमान में) किसी डेवलपर के लिए फ़ोन से अनन्य ID प्राप्त करने के लिए सबसे विश्वसनीय तरीका रीड फ़ोन स्टेट की अनुमति stackoverflow.com/questions/2785485/…
GATRrawn

40

इसकी एक और वजह है यूनिक आईडी। मुझे लगता है कि आधे ऐप उन मूल्यों का उपयोग नहीं करते हैं। समस्या यह है कि Android 1.5 तक के निचले संस्करण के लिए यह अनुमति मौजूद नहीं है। हर कोई बिना कुछ अनुरोध किए इन मूल्यों तक पहुंच सकता है।

इसलिए यदि आप एक ऐप बनाते हैं जो 1.5 के अनुकूल है, तो यह अनुमति स्वचालित रूप से एंड्रॉइड 1.5 की निचली सुरक्षा का अनुकरण करने के लिए जोड़ दी जाएगी क्योंकि आप इस अनुमति को ज्यादातर समय में अनदेखा कर सकते हैं क्योंकि यह सिर्फ एक संगतता मुद्दा है।


2
ऐसा ही एसडी कार्ड एक्सेस के साथ होता है।
डेनिस निकोलाको

1
यह सच है - लेकिन यह स्पष्ट नहीं करता है कि ऐप 2.x और अप के लिए ऐसा क्यों चाहते हैं।
इज़ी

19

कारण यह है कि एंड्रॉइड 1.5 और पहले के आवेदन को विशेष रूप से उन अनुमतियों का अनुरोध करने की आवश्यकता नहीं थी और स्वचालित रूप से उन्हें अनुमति दी गई थी। एंड्रॉइड 1.6 के बाद से, उन अनुमतियों को विशेष रूप से ऐप द्वारा अनुरोध किया जाना है। हालाँकि, यदि आप निर्दिष्ट करते हैं कि आपका एप्लिकेशन Android 1.5 और उससे कम के उपकरणों पर चल सकता है, तो उस अनुमति को डिफ़ॉल्ट रूप से एप्लिकेशन में जोड़ा जाता है और बाजार दिखाता है कि आवेदन द्वारा अनुरोध किया जा रहा है।

इसलिए सारांश में, एप्लिकेशन वास्तव में आपके "फोन की स्थिति और पहचान" तक नहीं पहुंच सकता है, लेकिन यदि डेवलपर ने निर्दिष्ट किया है कि उसका आवेदन 1.5 या उससे कम उपकरणों के साथ चल सकता है, तो वह अनुमति दिखाई जाएगी।


क्या आपको यह दिखाने वाले किसी दस्तावेज़ का लिंक मिला है?
गैथ्रॉन 13


डेवलपर. android.com/reference/android/os/… लक्ष्य संस्करण पहचानकर्ताओं और अनुमतियों में परिवर्तन (अन्य अंतरों के बीच) की पूरी सूची देता है।
स्टीवर्ट

सही। लेकिन शायद नहीं रह गया है "रोचक", 1.5 और निचले हिस्से के लिए एप्लिकेशन के रूप में मिला काफी दुर्लभ :)
इज़ी

18

यह सवाल मुझे काफी समय से परेशान कर रहा है। इसलिए अब, आखिरकार, मैंने इस मुद्दे की तह तक जाने का फैसला किया।

Playstore के पास अनुमति नाम का एक ऐप है ।READ_PHONE_STATE , जो READ_PHONE_STATEकेवल अनुमति के रूप में अनुरोध करता है, और इसके उपयोग से या इसके बिना उपयोग किए जा सकने वाले सभी डेटा को प्रिंट करने के अलावा और कुछ नहीं करता है। मैंने अपने एलजी ऑप्टिमस 4X पर स्थापित किया है, जो स्टॉक एंड्रॉइड 4.0.3 पर निहित है, और एलबीई का उपयोग करके अनुमति रद्द कर दी है। निम्नलिखित स्क्रीनशॉट के रूप में परिणाम जहां काफी दिलचस्प हैं:

स्क्रीनशॉट 1 स्क्रीनशॉट 2 स्क्रीनशॉट 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 है, तो आपको स्वचालित रूप से अनुमति नहीं मिलती है।


अपडेट

  1. दिलचस्प है कि इनकमिंग कॉल और संबंधित (टेलीफोनी) का पता लगाने के लिए एक खुला मुद्दा (21504) है READ_PHONE_STATE, जो आवश्यक है (और टेलीफोनी), और पहचान विवरण (आईएमईआई, आईएमएसआई, आदि) के लिए एक दूसरी अनुमति। 11/2011 को खोला गया, फिर भी इस पर काम नहीं किया गया। रुचि होने पर इसे स्टार दें :)
  2. और हाँ, वहाँ एक रास्ता एक ही (पता लगाने आने वाली कॉल) प्राप्त करने के लिए है बिनाREAD_PHONE_STATE अनुमति के, के रूप में जैसे आर्नो Welzel से बताया । आने वाले फोन कॉल के रूप में रिंगर को ट्रिगर किया जाएगा, उस घटना का उपयोग किया जा सकता है onAudioFocusChange(), जिसके लिए किसी विशेष अनुमति की आवश्यकता नहीं होती है: यदि उसके द्वारा ट्रिगर किया जाता है, तो ऐप कॉलस्टेट (फिर से, किसी विशेष अनुमति के बिना) की जांच कर सकता है कि क्या कोई है? आने वाली कॉल।

मुझे लगता है कि आपको उस हिस्से को हटाने की आवश्यकता है जहां आप कहते हैं कि किसी भी ऐप को इनकमिंग कॉल पर पृष्ठभूमि की अनुमति की आवश्यकता नहीं है। आप पहले से ही फुटनोट 2 में इस बिंदु को बनाते हैं, लेकिन यह विरोधाभासी है। डेवलपर को
मिकेल

@ मायिक आप आंशिक रूप से सही हैं। इस अनुमति का उपयोग कार्य को पूरा करने का "सबसे आसान" तरीका है, लेकिन यह एकमात्र नहीं है। यह बिना किया जा सकता है, जैसा कि कुछ डेवलपर ने बताया (क्या यह चैट पर था? दुर्भाग्य से, मैंने लिंक खो दिया है)। कई चीजों के साथ, Google के API का उपयोग करने से कुछ चीजें पूरी हो जाती हैं (जबकि यह आपके ऐप को Google इको सिस्टम से भी बांधता है)। मैं एक डेवलपर नहीं हूं, इसलिए मैं यह नहीं बता सकता कि दूसरे तरीके से कितना अधिक काम होगा।
इज़ी

मैं अभी तक एंड्रॉइड देव नहीं हूं, और मैं मानता हूं कि ऐसा लगता है कि कुछ उपयोग मामलों को ऑनपॉज़ () द्वारा कवर किया गया है। केवल यह कहते हुए कि "किसी भी ऐप को इस अनुमति की आवश्यकता नहीं है" मुझे गलत लगता है। ऐसा लगता है जैसे "कुछ ऐप्स को इस अनुमति की आवश्यकता हो सकती है", उदाहरण के लिए यदि वे पृष्ठभूमि में चलते हैं। यह भी ध्यान दें कि प्रसारण इरादे को प्राप्त करना निश्चित रूप से फोन राज्य को बार-बार मतदान करने से अधिक कुशल होना चाहिए।
मिकेल

@ मायिक मेरा अपडेट देखें। और हाँ, "कोई ज़रूरत नहीं है" थोड़ा अतिरंजित हो सकता है। हो सकता है कि सभी मौजूदा अनुरोधों के 0.5% में, वास्तव में इसकी आवश्यकता हो सकती है, जिसमें कोई विकल्प उपलब्ध नहीं है #D और हाँ फिर से: onPause()हमने उस पर चैट पर चर्चा की थी! लेकिन onAudioFocusChange()कम ओवरहेड का उपयोग करना भी कम हो सकता है (थोड़ा मतदान तो इग्नोर हो सकता है)।
इज़ी

10

कई विज्ञापन प्रकाशक सभी प्रकार के ट्रैकिंग उद्देश्यों के लिए फ़ोन आईडी प्राप्त करने के लिए इस अनुमति का उपयोग करते हैं। एक अद्वितीय आईडी प्राप्त करने के अन्य तरीके हैं, लेकिन दुर्भाग्य से वे पुराने एंड्रॉइड संस्करणों में छोटी गाड़ी हैं (कहानी अधिक जटिल है, उदाहरण के लिए देखें https://stackoverflow.com/questions/2785485/is-there-a-unique-android आदि डिवाइस-आईडी या http://android-developers.blogspot.com/2011/03/identifying-app-installations.html एक और पूरी कहानी के लिए)।

इसलिए यदि एप्लिकेशन विज्ञापनों का उपयोग करता है, तो एक उचित मौका है कि ऐप को वास्तव में READ_PHONE_STATE अनुमति की आवश्यकता नहीं है, केवल विज्ञापन प्रदाता करता है।


1
कि IMHO यह सब के पीछे मुख्य मुद्दा है! अच्छी तरह से पता लगाया।
इज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.