2012-03-13 18 views
14

के आधार पर ऐप विजेट छुपाएं मैंने एंड्रॉइड के प्री होनकॉम संस्करणों के लिए विभिन्न आकारों के साथ तीन ऐप विजेट बनाए हैं और हनीकॉम के लिए एक आकार बदलने योग्य स्क्रॉल करने योग्य सूचीदृश्य विजेट और बाद में।एपीआई स्तर

चूंकि विगेट्स समान कार्यक्षमता प्रदान करते हैं और एक हनीकॉम के लिए लक्षित है और बाद में आकार बदलने योग्य है, मैं एपीआई स्तर 12 या बाद में विजेट के अन्य संस्करणों को हटाना चाहता हूं। क्या यह किसी भी तरह से संभव है?

जहां तक ​​मैं कह सकता हूं कि ऐपविड्ज सेवा द्वारा पंजीकृत होने से विजेट को अक्षम करने का कोई तरीका नहीं प्रतीत होता है यदि यह AppWidgetProviderInfo संसाधन फ़ाइल पा सकता है। तो ऐसा लगता है कि मैं केवल बाद के संस्करणों पर विजेट शामिल कर सकता हूं लेकिन पहले एपीआई संस्करणों को लक्षित करने वाले एक्सएमएल फ़ोल्डरों में परिभाषित संस्करणों को बाहर नहीं रख सकता।

उत्तर

9

यदि यह एक ही ऐप्लिकेशन विजेट था कि पूर्व उच्च न्यायालय या उच्च न्यायालय कार्यान्वयन थे, तो आप उन्हें एक AppWidgetProvider में गठबंधन और res/xml-v11/ और res/xml/ का उपयोग अलग मेटाडाटा के लिए कर सकता है।

एक ही रास्ता मैं अपने परिदृश्य को संभालने के लिए के बारे में सोच सकते हैं, हालांकि, सक्षम और android.os.Build.VERSION आधार पर अपने ऐप की पहली बार चलाने पर अपने प्रदाताओं को निष्क्रिय के रूप में प्रकट (android:enabled="false") में अक्षम AppWidgetProviders के कुछ चिह्नित करने के लिए है, तो है आपको सही सेट देने के लिए PackageManager और setComponentEnabledSetting() का उपयोग कर। एंड्रॉइड 3.1+ पर, उपयोगकर्ता को ऐप विजेट जोड़ने में सक्षम होने के लिए अपनी गतिविधियों में से एक लॉन्च करने की आवश्यकता होगी, वैसे भी, आपके पास कम से कम प्रवेश बिंदु है जिसमें इस तर्क को लागू करना है।

+0

धन्यवाद। यह समाधान बहुत अच्छा काम कर रहा है। यदि आप 'appwidget-provider' में 'android: enable' विशेषता' का उपयोग कर सकते हैं तो यह अच्छा होगा, लेकिन इसे करना होगा .. :) – davidk

+0

@ कॉमन्सवेयर क्या आप कुछ संक्षिप्त विचार दे सकते हैं। – Harshid

+1

आप इसमें एक बूलियन मान के साथ एक 'xml' फ़ाइल क्यों नहीं बनाते हैं। 'Res/values-v11 /' (या जो भी इसे बाहर रखा जाना चाहिए) में बूलियन को झूठा सेट करें और अपने 'एंड्रॉइडमैनिफेस्ट' में, 'एंड्रॉइड: सक्षम = "@ bool/enable_listview_appwidget" के लिए बूलियन का संदर्भ लें? – xbakesx

19

ओपी को पहले से ही उसका समाधान मिला है, लेकिन हममें से बाकी के लिए, हम xml में bool मानों का लाभ उठा सकते हैं और उन्हें विभिन्न संसाधन निर्देशिकाओं में अलग-अलग सेट कर सकते हैं।

<receiver 
    android:label="@string/app_widget_small" 
    android:enabled="@bool/is_pre_api_11"> 

    <!-- App Widget Stuff Here --> 

</receiver> 
<receiver 
    android:label="@string/app_widget_large" 
    android:enabled="@bool/is_pre_api_11"> 

    <!-- App Widget Stuff Here --> 

</receiver> 
<receiver 
    android:label="@string/app_widget_resizeable" 
    android:enabled="@bool/is_post_api_11"> 

    <!-- App Widget Stuff Here --> 

</receiver> 

और /res/values/attrs.xml में:

<resources> 
    <bool name="is_pre_api_11">true</bool> 
    <bool name="is_post_api_11">false</bool> 
</resources> 

फिर /res/values-v11/attrs.xml में:

तो अपने AndroidManifest कुछ इस तरह दिखता

<resources> 
    <bool name="is_pre_api_11">false</bool> 
    <bool name="is_post_api_11">true</bool> 
</resources> 

अब अपने एपीआई 10 और नीचे दो होगा ऐप विजेट (छोटे और बड़े) और एपीआई 11 और उच्च wil मैं एक आकार बदलने योग्य ऐप विजेट है।

+0

ऐसा लगता है कि आप केवल एक बूल –

+0

@Alexey का उपयोग कर सकते हैं, हाँ इस मामले में आप केवल एक साल पहले एक बूलियन का उपयोग कर सकते थे, लेकिन मुझे पूरा यकीन है कि मेरे पास एक ही रणनीति का लाभ उठाने के आसपास अन्य स्थितियां थीं। अच्छा कॉल हालांकि, इस साधारण मामले में सिर्फ एक बूलियन पर्याप्त है। – xbakesx

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