// APPWIDGET_HOST_ID is any number you like appWidgetManager = AppWidgetManager.getInstance(this); appWidgetHost = new AppWidgetHost(this, APPWIDGET_HOST_ID); AppWidgetProviderInfo newAppWidgetProviderInfo = new AppWidgetProviderInfo(); // Get an id int appWidgetId = appWidgetHost.allocateAppWidgetId(); // Get the list of installed widgets List<AppWidgetProviderInfo> appWidgetInfos = new ArrayList<AppWidgetProviderInfo>(); appWidgetInfos = appWidgetManager.getInstalledProviders(); for(int j = 0; j < appWidgetInfos.size(); j++) { if (appWidgetInfos.get(j).provider.getPackageName().equals("com.android.quicksearchbox") && appWidgetInfos.get(j).provider.getClassName().equals("com.android.quicksearchbox.SearchWidgetProvider")) { // Get the full info of the required widget newAppWidgetProviderInfo = appWidgetInfos.get(j); break; } } // Create Widget AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, newAppWidgetProviderInfo); hostView.setAppWidget(appWidgetId, newAppWidgetProviderInfo); // Add it to your layout LinearLayout ll = (LinearLayout) findViewById(R.id.ll); ll.addView(hostView);
@Test public void getInstalledProviders_returnsWidgetList() throws Exception { AppWidgetProviderInfo info1 = new AppWidgetProviderInfo(); info1.label = "abc"; AppWidgetProviderInfo info2 = new AppWidgetProviderInfo(); info2.label = "def"; shadowAppWidgetManager.addInstalledProvider(info1); shadowAppWidgetManager.addInstalledProvider(info2); List<AppWidgetProviderInfo> installedProviders = appWidgetManager.getInstalledProviders(); assertEquals(2, installedProviders.size()); assertEquals(info1, installedProviders.get(0)); assertEquals(info2, installedProviders.get(1)); }
@Test public void createView_shouldSetViewsAppWidgetInfo() throws Exception { AppWidgetProviderInfo info = new AppWidgetProviderInfo(); AppWidgetHostView hostView = appWidgetHost.createView(context, 0, info); assertThat(hostView.getAppWidgetInfo()).isSameAs(info); }
@Test public void shouldKnowItsAppWidgetProviderInfo() throws Exception { AppWidgetProviderInfo providerInfo = new AppWidgetProviderInfo(); appWidgetHostView.setAppWidget(0, providerInfo); assertThat(appWidgetHostView.getAppWidgetInfo()).isSameAs(providerInfo); }
@Test public void bindAppWidgetId_shouldRecordAppWidgetInfo() throws Exception { ComponentName provider = new ComponentName("abc", "123"); AppWidgetProviderInfo providerInfo = new AppWidgetProviderInfo(); providerInfo.provider = provider; shadowAppWidgetManager.addInstalledProvider(providerInfo); appWidgetManager.bindAppWidgetIdIfAllowed(90210, provider); assertSame(providerInfo, appWidgetManager.getAppWidgetInfo(90210)); }
@Test public void getAppWidgetInfo_shouldReturnSpecifiedAppWidgetInfo() throws Exception { AppWidgetProviderInfo expectedWidgetInfo = new AppWidgetProviderInfo(); shadowAppWidgetManager.addBoundWidget(26, expectedWidgetInfo); assertEquals(expectedWidgetInfo, appWidgetManager.getAppWidgetInfo(26)); assertEquals(null, appWidgetManager.getAppWidgetInfo(27)); }
static final String EXTRA_CUSTOM_WIDGET = "custom_widget"; static final String SEARCH_WIDGET = "search_widget"; void pickappWidget(){ int appWidgetId = Launcher.this.mAppWidgetHost.allocateAppWidgetId(); Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); // add the search widget ArrayList<AppWidgetProviderInfo> customInfo = new ArrayList<AppWidgetProviderInfo>(); AppWidgetProviderInfo info = new AppWidgetProviderInfo(); info.provider = new ComponentName(getPackageName(), "XXX.YYY"); info.label = getString(R.string.group_widgets); info.icon = R.drawable.ic_allapps; customInfo.add(info); pickIntent.putParcelableArrayListExtra( AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo); ArrayList<Bundle> customExtras = new ArrayList<Bundle>(); Bundle b = new Bundle(); b.putString(EXTRA_CUSTOM_WIDGET, SEARCH_WIDGET); customExtras.add(b); pickIntent.putParcelableArrayListExtra( AppWidgetManager.EXTRA_CUSTOM_EXTRAS, customExtras); // start the pick activity startActivityForResult(pickIntent, REQUEST_PICK_APPWIDGET); }