2011-05-17 12 views
7

मेरे ऐप में मैं उपलब्ध होने पर स्थान जानकारी का प्रयास करता हूं और उपयोग करता हूं। इसलिए मेरे पास मेरे मैनिफेस्ट में उन अनुमतियां हैं:स्थान के वैकल्पिक उपयोग पर एंड्रॉइड मार्केट फ़िल्टरिंग से बचें

उदा।

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

नोट: मेरे पास स्थान के लिए कोई स्थान नहीं है, जिसे टैग समझा गया था जिसे एंड्रॉइड मार्केट में फ़िल्टर करने के लिए इस्तेमाल किया गया था।

मैं Android बाजार के लिए अपलोड किए जाने पर मैं इस सूचना मिलती है:

यह apk 4 सुविधाओं Android Market फ़िल्टरिंग android.hardware.location.network लिए इस्तेमाल किया जा जाएगा का अनुरोध करता है android.hardware.location android.hardware.location.gps android.hardware.touchscreen

जो मेरे लिए चलता है कि यह केवल उन उपकरणों के स्थान और location.network और जीपीएस हेक्टेयर के लिए दिखाई देगा rdware।

लेकिन मेरे स्थान का उपयोग वैकल्पिक है और यदि यह avaialble नहीं है तो ऐप काम करेगा।

क्या मुझे अपने मैनिफेस्ट से उन अनुमतियों को हटा देना चाहिए (जब मैं इसे उपयोग करने का प्रयास करता हूं तो क्या मुझे अपवाद मिलेंगे?)?

क्या अनुमतियां छोड़ने और एंड्रॉइड मार्केट फ़िल्टरिंग से बचने का कोई तरीका है?

+0

मैंने एक स्पष्ट उपयोग-सुविधा जोड़ने की कोशिश की है, लेकिन उन्हें वैकल्पिक बनाते हुए: <उपयोग-सुविधा एंड्रॉइड: नाम = "android.hardware.location" एंड्रॉइड: आवश्यक = "झूठा" /> <उपयोग-सुविधा एंड्रॉइड: नाम = "android.hardware.location.gps" एंड्रॉइड: आवश्यक = "झूठा" /> <उपयोग-सुविधा एंड्रॉइड: नाम = "android.hardware.touchस्क्रीन" एंड्रॉइड: आवश्यक = "झूठा" /> लेकिन यह नहीं था कुछ भी बदलें –

उत्तर

3

मेरे आवेदन में एक ही समस्या है। मुझे लगता है कि ऐसा इसलिए है क्योंकि minSdkVersion 4 है, यानी एंड्रॉइड 1.6। <uses-feature> documentation से:

सामान्य में, अगर आपके आवेदन Android 1.6 और पहले के संस्करणों पर चलने के लिए बनाया गया है, एंड्रॉयड: आवश्यक विशेषता एपीआई में उपलब्ध नहीं है और Android बाजार मानता है कि किसी भी और सभी घोषणाओं की आवश्यकता है।

यह समझ में आता है, क्योंकि जब आप के रूप में वैकल्पिक एक सुविधा की घोषणा, आप क्या वर्तमान उपकरण है, जो विशेष रूप से सुविधा है की जाँच करने के PackageManager से hasSystemFeature() विधि का उपयोग करने वाले हैं। हालांकि, यह विधि केवल एपीआई स्तर 5 से उपलब्ध है!

+0

अच्छा खोज। परेशान समस्या। काश वे अधिक स्पष्ट रूप से कहा होगा कि 'एंड्रॉइड: आवश्यक' विशेषता को उस उद्धरण को खोजने के लिए दस्तावेज़ों में खोदने के बजाय API5 तक पेश नहीं किया गया था। पृष्ठ के शीर्ष पर वे कहते हैं कि '<उपयोग-सुविधा>' टैग API4 में पेश किया गया था, लेकिन यह उल्लेख न करें कि 'आवश्यक' विशेषता API5 तक नहीं थी। –

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