@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)); }
@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)); }
/** * Check if widget needs configuration and display configuration view if necessary, * otherwise just add the widget * * @param data Intent holding widget id to configure */ private void configureAppWidget(Intent data) { int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidget.configure != null) { // Launch over to configure widget, if needed. Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); intent.setComponent(appWidget.configure); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); mainActivity.startActivityForResult(intent, REQUEST_CREATE_APPWIDGET); } else { // Otherwise, finish adding the widget. addAppWidget(data); } } }
/** * Adds a widget to the widget area on the MainActivity * * @param appWidgetId id of widget to add */ private void addWidgetToLauncher(int appWidgetId) { // only add widgets if in minimal mode (may need launcher restart when turned on) if (prefs.getBoolean("history-hide", true)) { // remove empty list view when using widgets, this would block touches on the widget mainActivity.emptyListView.setVisibility(View.GONE); //add widget to view AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo == null) { removeAllWidgets(); return; } AppWidgetHostView hostView = mAppWidgetHost.createView(mainActivity, appWidgetId, appWidgetInfo); hostView.setMinimumHeight(appWidgetInfo.minHeight); hostView.setAppWidget(appWidgetId, appWidgetInfo); if (Build.VERSION.SDK_INT > 15) { hostView.updateAppWidgetSize(null, appWidgetInfo.minWidth, appWidgetInfo.minHeight, appWidgetInfo.minWidth, appWidgetInfo.minHeight); } widgetArea.addView(hostView); } // only one widget allowed so widgetUsed is true now, even if not added to view widgetUsed = true; }
public ComponentName getConfigure(int appWidgetId) { AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo==null) return null; return appWidgetInfo.configure; }
public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); }
public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); }
public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); }
public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); }
public AppWidgetProviderInfo getAppWidgetInfo(int appWidgetId) { return mAppWidgetManager.getAppWidgetInfo(appWidgetId); }
public ComponentName getComponentNameFromIntent(Intent data) { if (data!=null) { int appWidgetId = getAppWidgetIdFromIntent(data); if (appWidgetId != -1) { AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo != null) { return appWidgetInfo.provider; } } } return null; }
public AppWidgetHostView configureWidget(Activity parent, int appWidgetId){ AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo!=null) { if (appWidgetInfo.configure != null) { // If the widget wants to be configured then start its configuration activity Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); intent.setComponent(appWidgetInfo.configure); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); parent.startActivityForResult(intent, REQUEST_CREATE_APPWIDGET); } else { // Otherwise simply create it return createWidgetFromId(appWidgetId); } } return null; }
private void configureWidget(Intent data) { Bundle extras = data.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo.configure != null) { Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); intent.setComponent(appWidgetInfo.configure); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); startActivityForResult(intent, REQUEST_CREATE_APPWIDGET); } else { createWidget(data); } }
public Widget(Context context) { mContext = context; mPrefs = context.getSharedPreferences("widgets", Context.MODE_PRIVATE); setupHost(context); //mAppWidgetHost.deleteHost(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { for (int oid: mAppWidgetHost.getAppWidgetIds()) { AppWidgetProviderInfo provider = mAppWidgetManager.getAppWidgetInfo(oid); if (provider==null) continue; Log.d(TAG, "Widget is allocated: " + provider.provider); } } }
public void updateWidgetId(int oldId, int newId) { AppWidgetProviderInfo provider = mAppWidgetManager.getAppWidgetInfo(newId); AppWidgetHostView w = mLoadedWidgets.get(provider.provider); if (w!=null) { w.setAppWidget(newId, provider); } saveWidgetId(provider.provider, newId); mAppWidgetHost.deleteAppWidgetId(oldId); }
public AppWidgetHostView onActivityResult(Activity parent, int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityResult: requestCode=" + requestCode + " resultCode=" + resultCode); // listen for widget manager response if (resultCode == Activity.RESULT_OK) { if (requestCode == REQUEST_PICK_APPWIDGET) { Log.d(TAG, "configureWidget"); return configureWidget(parent, data); } else if (requestCode == REQUEST_CREATE_APPWIDGET || requestCode == REQUEST_BIND_APPWIDGET) { Log.d(TAG, "createWidget"); return createWidget(data); } else { Log.d(TAG, "unknown RESULT_OK"); } } else if (resultCode == Activity.RESULT_CANCELED) { Log.d(TAG, "RESULT_CANCELED"); if (data!=null) { int appWidgetId = getAppWidgetIdFromIntent(data); AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetId != -1) { if (appWidgetInfo==null || getWidgetId(appWidgetInfo.provider)==-1) { mAppWidgetHost.deleteAppWidgetId(appWidgetId); } } } } return null; }
private AppWidgetHostView createWidgetFromId(int widget_id) { AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(widget_id); if (appWidgetInfo==null) { return null; } // if (checkBindPermission(widget_id, appWidgetInfo.provider)) return null; AppWidgetHostView hostView = getLoadedAppWidgetHostView(appWidgetInfo.provider); if (hostView==null || hostView.getAppWidgetId()!=widget_id) { // Create the host view hostView = mAppWidgetHost.createView(mContext, widget_id, appWidgetInfo); hostView.setAppWidget(widget_id, appWidgetInfo); } return hostView; }
private static void updateWidgets(Context context, AppWidgetManager manager, int[] appWidgetIds, boolean nextAccount) { Log.d("Financisto", "updateWidgets " + Arrays.toString(appWidgetIds) + " -> " + nextAccount); for (int id : appWidgetIds) { AppWidgetProviderInfo appWidgetInfo = manager.getAppWidgetInfo(id); if (appWidgetInfo != null) { int layoutId = appWidgetInfo.initialLayout; if (MyPreferences.isWidgetEnabled(context)) { long accountId = loadAccountForWidget(context, id); Class providerClass = getProviderClass(appWidgetInfo); Log.d("Financisto", "using provider " + providerClass); RemoteViews remoteViews = nextAccount || accountId == -1 ? buildUpdateForNextAccount(context, id, layoutId, providerClass, accountId) : buildUpdateForCurrentAccount(context, id, layoutId, providerClass, accountId); manager.updateAppWidget(id, remoteViews); } else { manager.updateAppWidget(id, noDataUpdate(context, layoutId)); } } } }
public void createWidget(Intent data) { Bundle extras = data.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); LauncherAppWidgetHostView hostView = (LauncherAppWidgetHostView) mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo); hostView.setAppWidget(appWidgetId, appWidgetInfo); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(homeView.getWidth()/3, homeView.getHeight()/3); lp.leftMargin = numWidgets * (homeView.getWidth()/3); hostView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { System.out.println("LONG PRESSED WIDGET"); v.setBackgroundColor(Color.RED); return false; } }); homeView.addView(hostView,lp); slidingDrawer.bringToFront(); numWidgets ++; }
/** * Add a host view to the frame layout for a widget id. * @param appWidgetId the widget id */ public void addHostView(final int appWidgetId) { frWidget.removeAllViews(); if (hasAppWidgets(this)) { final AppWidgetProviderInfo appWidgetInfo = appWidgetManager.getAppWidgetInfo(appWidgetId); if (appWidgetInfo != null) { final AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, appWidgetInfo); hostView.setAppWidget(appWidgetId, appWidgetInfo); frWidget.addView(hostView); frWidget.requestLayout(); final Bundle options = BundleUtil.getWidgetOptionsBundle(frWidget.getMeasuredWidth(), frWidget.getMeasuredHeight(), frWidget.getMeasuredWidth(), frWidget.getMeasuredHeight()); hostView.updateAppWidgetOptions(options); } else { model.setAppWidgetId(-1); } } }