2010-11-25 15 views
7

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

Intent myIntent = new Intent(Intent.ACTION_MAIN, null); 
myIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> appsInfo = MyActivity.getPackageManager().queryIntentActivities(myIntent, 0); 

का उपयोग कर का उपयोग करते हुए एक ग्रिड पॉप्युलेट और प्रत्येक ResolveInfo के माध्यम से पुनरावृत्ति से कर सकते हैं।
मैं उपलब्ध होम स्क्रीन विजेट के साथ ऐसा कैसे कर सकता हूं? मैं एक ही सूची के साथ एक ग्रिड पॉप्युलेट करना चाहता हूं जो दिखाई देता है जो स्क्रीन को छूता रहता है और दिखाई देने वाले पॉपअप से 'विजेट' चुनता है।

उत्तर

6

पर getInstalledProviders() पर कॉल करें।

+0

आपको बहुत बहुत धन्यवाद के लिए, निकाला जा सकता है है! यह करो! – lorenzoff

+0

यह कभी-कभी android.os.TransactionTooLargeException फेंक देगा। मैं काम नहीं कर सकता क्यों ... –

+1

@ बॉबबॉबिंगटन: ऐसा होगा यदि डिवाइस पर बहुत से 'AppWidgetProviders' हैं। आपकी प्रक्रिया से सभी एक साथ आईपीसी संचालन पर 1 एमबी सीमा है, इसलिए यदि 'getInstalledProviders() 'का परिणाम 1 एमबी से अधिक है, तो आपको यह अपवाद मिलेगा। भले ही 'getInstalledProviders()' सूची छोटी है, अगर आप इसे कॉल करते हैं, जबकि आपकी प्रक्रिया में कुछ अन्य आईपीसी चल रहा है (और 1 एमबी सीमा में से कुछ का उपभोग कर रहा है), तो आपको यह अपवाद मिलेगा। – CommonsWare

9

CommonsWare ने सुझाव दिया है, यहाँ विगेट्स

AppWidgetManager manager = AppWidgetManager.getInstance(this); 
List<AppWidgetProviderInfo> infoList = manager.getInstalledProviders(); 
for (AppWidgetProviderInfo info : infoList) { 
    Log.d(TAG, "Name: " + info.label); 
    Log.d(TAG, "Provider Name: " + info.provider); 
    Log.d(TAG, "Configure Name: " + info.configure); 
} 

विभिन्न अन्य मानों की सूची निकालने के लिए काम कर रहे कोड अधिक संदर्भ देखें AppWidgetProviderInfo

+0

इसके साथ जुड़े विजेट का आइकन प्राप्त करना संभव है? –

+0

@RandyFreak हाँ हम इस से आइकन निकाल सकते हैं –

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