2015-06-08 6 views
19

Android M Preview docs हमें दिखाता है कि नए अनुमति मॉडल के साथ अनुमतियों को कैसे जांचें और अनुरोध करें। नीचे दिए गए चार्ट में यह हमें अनुमति समूह और उनके संबंधित अनुमतियों का समूह दिखाता है।एंड्रॉइड एम अनुमति_ग्रुप के साथ अनुमतियों का अनुरोध

मैं के साथ एक permission_group (यानी Manifest.permission_group.CAMERA) पहली शुरुआत पर checkSelfPermission करने के लिए प्रयास करते हैं, जाहिर मैं PackageManager.PERMISSION_DENIED मिलता है।

फिर उसी permission_group के लिए requestPermissions पर आज़माएं और मुझे पॉप अप करने के लिए कोई भी प्रकार का संवाद नहीं मिलता है। 'onRequestPermissionsResult' -1 के साथ तत्काल लौटाता है।

जब मैं Manifest.permission.Camera के साथ समान अनुक्रम का प्रयास करता हूं - चीजें सामान्य के रूप में काम करती हैं। लेकिन एक साधारण ऐप के लिए जो मैं कर रहा हूं, मुझे ऑडियो के साथ वीडियो रिकॉर्ड करने और दो अलग-अलग अनुमतियों का अनुरोध करने की आवश्यकता है, CAMERA और MICROPHONE (उर्फ RECORD_AUDIO) खराब डिज़ाइन की तरह दिखता है।

सवाल: checkSelfPermission और requestPermissionManifest.permission.* और Manifest.permission_group.* के साथ काम करने की अपेक्षा की है लेकिन वहाँ एक बग कि मैं इसे के बाद से दायर करनी चाहिए अनुरोध नहीं दिखाया जाएगा है? या यह जानबूझकर डिजाइन था?

* ध्यान दें - मैं समझता हूँ कि मैं इसमें अपने आप को एक से अधिक अनुमतियों के साथ एक requestPermissions(String[], int) स्ट्रिंग सरणी बना सकते हैं, लेकिन अभी भी आईडी अनुमतियाँ मैं जरूरत के संयोजन की जाँच करने के if बयान के बहुत सारे है और जब मैं उन्हें एक समूह के रूप में अनुरोध करने के लिए चाहिए केवल एक permission_group

उत्तर

24

अनुरोध करने के लिए जब मैं पहली बार शुरू पर एक permission_group (यानी Manifest.permission_group.CAMERA) के साथ checkSelfPermission करने की कोशिश करते हैं जाहिर मैं PackageManager.PERMISSION_DENIED पाने की जरूरत है,।

ऐसा इसलिए है क्योंकि checkSelfPermission() अनुमति समूह की अनुमति नहीं है, अनुमति समूह नहीं है।

फिर अनुरोध करने का प्रयास करें उसी अनुमति_ग्रुप के लिए अनुमतियां और मुझे पॉप अप करने के लिए कोई भी प्रकार का संवाद नहीं मिलता है। 'onRequestPermissionsResult' तुरंत -1 के साथ रिटर्न।

ऐसा इसलिए है क्योंकि requestPermissions() अनुमतियों के साथ काम करता है, अनुमति समूह नहीं।

checkSelfPermission और requestPermission Manifest.permission के साथ काम करने की अपेक्षा की है। *

हां।

और Manifest.permission_group। *

सं

या यह जानबूझकर डिजाइन किया गया था?

संभवतः, हाँ।कम से कम checkSelfPermission() पर, यह अन्य पूर्व-मौजूदा विधियों के ऊपर परतें जो API स्तर 1 पर वापस आती हैं और अनुमतियों पर काम करती हैं, अनुमति समूह नहीं।

जब मैं केवल एक permission_group अनुरोध करने के लिए

आप Android के भविष्य है कि सही नहीं हो सकता के बारे में मान्यताओं बना रहे हैं की जरूरत है चाहिए। अभी, प्री-एम, अनुमति समूह विशेष रूप से महत्वपूर्ण नहीं हैं, और अनुमतियां क्या मायने रखती हैं। एम में, अनुमति समूह महत्व में चढ़ते हैं, जैसा कि एम उपयोगकर्ता को नियंत्रित करने के संबंध में उपयोगकर्ताओं को समाप्त करने के लिए इसकी प्रस्तुति में उपयोग करता है। हालांकि, इसके बाद एंड्रॉइड के संस्करण इस पर बेहतर ग्रैन्युलरिटी प्रदान कर सकते हैं, चाहे व्यक्तिगत उपयोगकर्ताओं या नीतियों के माध्यम से उद्यमों के लिए, और संभवतः अनुमतियों पर वापस जाना होगा।

एपीआई सुझाव देता है कि Google इस तरह के चालों के लिए दरवाजा खोल रहा है। असल में, अनुमति समूह सामान एक यूएक्स निर्णय है, तकनीकी एक से भी ज्यादा।

+0

पुराने एपीआई विधियों के शीर्ष पर चेकस्लेयर लेयरिंग के बारे में अनजान था, जो जानना अच्छा है। मैं बस कोशिश कर सकता हूं और एक सहायक उपयोगिता कर सकता हूं जो लोगों को अनुमति_ग्रुप में प्रवेश करने की अनुमति देता है और देखता है कि यह मेरे लिए समझ में आता है, और संभावित रूप से अन्य :) प्रतिक्रिया cw – trippedout

+0

प्रतिक्रिया के लिए धन्यवाद लेकिन फिर, 'manifestifest.permission_group' का ज्ञात उपयोग क्या है। class'? –

+0

@ हेन्डरएन्ग्रेनियन: उदाहरण के लिए, आप इसे 'पैकेजमेनगर' पर 'getPermissionGroupInfo() 'के साथ उपयोग कर सकते हैं (https://developer.android.com/reference/android/content/pm/PackageManager.html#getPermissionGroupInfo (जावा। lang.String,% 20int))। – CommonsWare

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