2011-08-15 14 views
24

क्या दो एपीके अपलोड किए बिना उचित एसडीके संस्करण संख्याओं को निर्दिष्ट किए बिना केवल "कुछ होम स्क्रीन> विजेट्स" संवाद में विजेट दिखाना संभव है?क्या केवल एक निश्चित एंड्रॉइड संस्करण के लिए विजेट दिखाना संभव है?

+2

यह दिलचस्प होगा, न केवल संस्करण पर निर्भर करता है बल्कि अधिक चीजें। – berlindev

+0

बेशक यह होगा :) मैंने अभी एंड्रॉइड संस्करण लिखा क्योंकि मुझे एपीआई प्रतिबंधों के कारण 2.1 के साथ समस्याएं आ रही हैं। – Cloudgiant

उत्तर

30

मैं किसी भी कोड जैसे बिना यह करने के लिए एक तरह से है:

अपने रेस में \ महत्व देता dir एक bools.xml फ़ाइल बनाने:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="honeycombOrAbove">false</bool> </resources>

एक बनाएं मान-v11 डीआईआर (हनीकोम्ब या मानों के ऊपर), फ़ाइल को कॉपी करें और मान को सही पर सेट करें।

फिर विजेट रिसीवर के लिए मैनिफेस्ट में उपयोग करें: android: enable = "@ bool/honeycombOrAbove"। मैंने इसे विजेट के लिए कॉन्फ़िगरेशन गतिविधि में भी इस्तेमाल किया।

इसका मतलब है कि विजेट इंस्टॉल समय पर अक्षम है।

+1

शानदार समाधान क्योंकि यह एप्लिकेशन स्थापित होने पर काम करता है और यह एक प्रावधान मुद्दा है। इसके लिए धन्यवाद - आपने आज सुबह एक समाधान के लिए शिकार का एक गुच्छा बचाया। –

+1

बिल्कुल सही समाधान। यह वास्तव में स्वीकार्य जवाब होना चाहिए था! –

+1

बहुत चालाक समाधान! निश्चित रूप से सबसे अच्छा जवाब! – pdegand59

9

आप इसे घटक सक्षम करने के साथ कर सकते हैं। बस उस विजेट को अक्षम करें जिसे आप सूचीबद्ध नहीं करना चाहते हैं। फ़ोन-पुनरारंभ करने के बाद परिवर्तन सक्रिय हो जाएगा।

Context context = getApplicationContext(); 
String str1 = "org.classname.to.widget.provider"; 
ComponentName componentName = new ComponentName(context, str1); 
PackageManager packageManager = getPackageManager(); 

int versioncode = Integer.valueOf(android.os.Build.VERSION.SDK);  

//enable widget 
packageManager.setComponentEnabledSetting(componentName, 1, 1); 

//disable widget 
packageManager.setComponentEnabledSetting(componentName, 2, 1); 
+0

हाँ यह समाधान काम करता है हालांकि मुझे इसे थोड़ा बदलना पड़ा क्योंकि यह कोड ऐप के संस्करण संख्या की तलाश करता है, न कि एसडीके। आपका बहुत बहुत धन्यवाद! – Cloudgiant

+0

आपने क्या बदल दिया? मैं संपादित कर सकता हूं और फिर आप अपनी समस्या के समाधान के रूप में उत्तर को स्वीकृति दे सकते हैं – berlindev

+0

बस यह पंक्ति "int versioncode = Integer.valueOf (android.os.Build.VERSION.SDK);" और जोड़ा गया है कि – Cloudgiant

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