2015-01-22 5 views
20

मैंने लोगों के कई विशिष्ट मामलों को देखा है और लोग दोनों के बीच अंतर बताते हैं लेकिन मैं सामान्य अंतर को समझ नहीं सकता और नहीं कर सकता। क्या दो समानार्थी हैं? क्या कोई दूसरा बताता है?उपयोग-अनुमति बनाम उपयोग-फ़ीचर

+0

http डिफ़ॉल्ट व्यवहार को ओवरराइड करता है: // stackoverflow.com/questions/12643825/androidmanifest-xml-implied-vs-explicit-permissions-uses-feature-vs-uses-permi –

उत्तर

33

क्या दो समानार्थी हैं?

सं। <uses-permission> कहता है "हे, एंड्रॉइड (और संबंधित वितरण चैनल), कृपया उपयोगकर्ता से मुझे एक्स करने की अनुमति दें"। <uses-feature> कहता है "हे, एंड्रॉइड (और संबंधित वितरण चैनल), मुझे फीचर वाई के साथ हार्डवेयर पर चलने में दिलचस्पी है।

<uses-feature> यदि आप अपनी आवश्यकताओं को पूरा नहीं करते हैं, तो उपयोगकर्ता आपको स्टोर स्टोर (और अन्य चैनल) से फ़िल्टर कर सकता है, लेकिन उपयोगकर्ता शामिल नहीं होता है।

क्या कोई दूसरा बताता है?

कभी-कभी। If you request certain permissions, like CAMERA, Android assumes by default that you need the corresponding hardware। यदि आवश्यक हो तो उस डिफ़ॉल्ट व्यवहार को ओवरराइड करने के लिए आप <uses-feature> और android:required="false" का उपयोग कर सकते हैं।

+0

धन्यवाद! यह इसे साफ़ करता है! –

+0

@CommonsWare मैं "com.android.vending.billing" के साथ <उपयोग-सुविधा> का उपयोग कर सकता हूं? –

+0

@OmarAbdan: यह सूचीबद्ध नहीं है [प्रलेखन में] (https://developer.android.com/guide/topics/manifest/uses-feature-element.html), इसलिए मुझे लगता है कि उत्तर "नहीं" है। – CommonsWare

3

<uses-permission> के साथ <uses-feature> का उपयोग करने की अनुशंसा की जाती है। आपके ऐप की प्रत्येक सुविधा <uses-feature> विशेषता android:required="false"के साथ की आवश्यकता है यदि आपका ऐप इसके बिना काम कर सकता है। इसका कारण यह है कि Google Play उन अनुप्रयोगों को फ़िल्टर करता है जिनमें सुविधाओं को प्रोग्रामेटिक रूप से लागू किया गया है लेकिन हार्डवेयर द्वारा समर्थित नहीं है, और नतीजतन आप उन्हें वहां नहीं देखते हैं।

उदाहरण के लिए, आपके ऐप की अनुमति के लिए कई अनुमतियों में से <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> है। यदि कोई डिवाइस है जिसमें जीपीएस क्षमता नहीं है, तो यह डिवाइस Google Play में इस ऐप को नहीं देख पाएगा। एक जीपीएस कनेक्शन के बिना पूरी तरह से कार्यात्मक अपने अनुप्रयोग, तो समाधान जोड़ने के लिए होगा:

<uses-feature android:name="android.hardware.location" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps" android:required="false"/> 
<uses-feature android:name="android.hardware.location.network" android:required="false"/> 

इस प्रकार, के रूप में यह पहले से ही @CommonsWare से उल्लेख किया गया है, <uses-feature> की <uses-permission>

+0

धन्यवाद, इससे एक टन में मदद मिली जब समस्या निवारण क्यों अमेज़ॅन टैबलेट मेरे ऐप के अनुकूल नहीं थे! – chapeljuice

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