2012-02-15 4 views
35

एंड्रॉइड में कई विशेषताओं को मैनिफेस्ट में सेट करने के लिए उपयोग-अनुमति की आवश्यकता होती है। ये मान तब निर्धारित करते हैं कि बाजार में कौन से डिवाइस उन्हें देखेंगे। हालांकि, यदि सुविधा वैकल्पिक है तो क्या किया जाना चाहिए ... यदि इसे कई उपकरणों पर चलाने के लिए बनाया जा सकता है, लेकिन केवल कुछ ही अनुमति की आवश्यकता होगी?वैकल्पिक अनुमतियां ताकि ऐप सभी उपकरणों पर दिखाया जा सके और कुछ पर वैकल्पिक सुविधाएं सक्षम कर सकें?

एक उदाहरण: मान लें कि कई सुविधाओं और एक अच्छी मात्रा में सामग्री वाला ऐप - और यह कंपनी को कॉल करने के लिए एक बटन प्रदान करता है। फोन नंबर ऐप में नंबर लिखने या चिपकाने और चिपकाने के विरोध में यह एक अच्छी सुविधाजनक सुविधा है। हालांकि, यह आवश्यक नहीं है।

यदि उस सुविधा का उपयोग किया जाता है और ऐप में टेलीफ़ोनी अनुमति जोड़ दी जाती है, तो यह फोन के लिए अच्छा और अच्छा है - लेकिन बाजार में कोई टैबलेट ऐप नहीं देखेगा।

इस समस्या का सामान्य समाधान क्या है?

एकाधिक ऐप्स को विभिन्न अनुमतियों के साथ बनाया जा सकता है, लेकिन उस दृष्टिकोण के साथ समस्याओं की एक दुनिया है (अतिरिक्त विकास समय, रखरखाव सुसंगत रखने में कठिनाई, समीक्षा और रेटिंग अलग-अलग ऐप्स में विभाजित होती है, और यदि कई अलग-अलग प्रकार के वैकल्पिक हैं प्रत्येक संयोजन के लिए एक अलग ऐप की अनुमति की आवश्यकता हो सकती है)।

ऐप प्रोग्रामेटिक रूप से जांच सकता है कि सुविधा उपलब्ध है या डिवाइस के आधार पर इसे सक्षम या अक्षम कर सकती है। इसके साथ समस्या यह है कि यदि ऐप की अनुमति नहीं है, तो यह उस सुविधा का उपयोग करने का प्रयास करने पर क्रैश हो जाएगा - और यदि उसके पास अनुमति है, तो कुछ डिवाइस ऐप को नहीं ढूंढ पाएंगे बाजार।

कुछ मामलों में, इस मुद्दे से बचने के लिए पूरी तरह से ऐप से अनिवार्य विशेषताओं को काटना संभव हो सकता है। यह एक अच्छा समाधान नहीं है, क्योंकि उन सुविधाओं का समर्थन करने वाले उपकरणों पर "अच्छा होना" होगा।

हाँ, मुझे पता है Is it possible to have "optional" permissions in Android? एक समान प्रश्न है। मैं नई जानकारी की उम्मीद कर रहा हूं और अन्य कामकाज के लिए लोगों को मिला है, यदि कोई है ... इस मुद्दे का समाधान क्या है? क्या ऊपर दिए गए लोगों के अलावा किसी के पास अन्य दृष्टिकोण हैं?

उत्तर

73

इस समस्या का सामान्य समाधान क्या है?

कि विशिष्ट समस्या के लिए, अपने प्रकट करने के लिए <uses-feature android:name="android.hardware.telephony" android:required="false"/> जोड़ने के लिए, कि this feature is optional इंगित करने के लिए। इसके बाद आप PackageManager और hasSystemFeature() का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि किसी डिवाइस में रनटाइम पर गैर-आवश्यक सुविधा है या नहीं।

+3

तो उपयोग-अनुमति को वैकल्पिक नहीं बनाया जा सकता है, लेकिन कई मामलों में उपयोग-सुविधा को जोड़ा जा सकता है, जिसे वैकल्पिक बनाया जा सकता है, और यह फ़िल्टरिंग के लिए बाजार का प्राथमिक स्रोत है। अति उत्कृष्ट! आपके द्वारा प्रदान किए गए लिंक को पढ़ने के बाद यह सब बहुत अधिक समझ में आता है, धन्यवाद। –

+0

@ChadSchultz: आपका विश्लेषण स्पॉट-ऑन है। मेरी इच्छा है कि मैं जिस सामग्री से जुड़ा हुआ हूं, वह वर्तमान स्थान की तुलना में थोड़ा अधिक प्रमुख था ... :-( – CommonsWare

+3

लोगों को यह देखने के लिए कि कोई सुविधा उपलब्ध है या नहीं, उस थ्रेड का पालन करें: http://stackoverflow.com/a/ 5264328/693752 – Snicolas

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