Java Code Examples for android.appwidget.AppWidgetManager#getAppWidgetInfo()

The following examples show how to use android.appwidget.AppWidgetManager#getAppWidgetInfo() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AccountWidget.java    From financisto with GNU General Public License v2.0 6 votes vote down vote up
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));
            }
        }
    }
}
 
Example 2
Source File: SuntimesWidgetListActivity.java    From SuntimesWidget with GNU General Public License v3.0 5 votes vote down vote up
public static WidgetListItem createWidgetListItem(Context context, int appWidgetId, AppWidgetManager widgetManager, SuntimesData data, String widgetTitle, String type) throws ClassNotFoundException
{
    AppWidgetProviderInfo info = widgetManager.getAppWidgetInfo(appWidgetId);
    String title = context.getString(R.string.configLabel_widgetList_itemTitle, widgetTitle);
    String source = ((data.calculatorMode() == null) ? "def" : data.calculatorMode().getName());
    String summary = context.getString(R.string.configLabel_widgetList_itemSummaryPattern, type, source);
    return new WidgetListItem(appWidgetId, info.icon, title, summary, Class.forName(info.configure.getClassName()) );
}
 
Example 3
Source File: ClementineWidgetProvider.java    From Android-Remote with GNU General Public License v3.0 5 votes vote down vote up
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this provider
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        appWidgetManager.getAppWidgetInfo(appWidgetId);

        // Get the layout for the App Widget and update fields
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.widget_clementine);

        switch (mCurrentClementineAction) {
            case DEFAULT:
            case CONNECTION_STATUS:
                updateViewsOnConnectionStatusChange(context, views);
                break;
            case STATE_CHANGE:
                updateViewsOnStateChange(context, views);
                break;
        }

        // Tell the AppWidgetManager to perform an update on the current app widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}
 
Example 4
Source File: GraphUtils.java    From your-local-weather with GNU General Public License v3.0 4 votes vote down vote up
protected static int[] getWidgetSize(Context context, int appWidgetId) {
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(
            context.getApplicationContext());

    AppWidgetProviderInfo providerInfo = appWidgetManager.getAppWidgetInfo(appWidgetId);

    int mWidgetLandWidth = providerInfo.minWidth;
    int mWidgetPortHeight = providerInfo.minHeight;
    int mWidgetPortWidth = providerInfo.minWidth;
    int mWidgetLandHeight = providerInfo.minHeight;

    Bundle mAppWidgetOptions = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        mAppWidgetOptions = appWidgetManager.getAppWidgetOptions(appWidgetId);
    }

    if (mAppWidgetOptions != null
            && mAppWidgetOptions
            .getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH) > 0) {

        mWidgetPortWidth = mAppWidgetOptions
                .getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
        mWidgetLandWidth = mAppWidgetOptions
                .getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
        mWidgetLandHeight = mAppWidgetOptions
                .getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
        mWidgetPortHeight = mAppWidgetOptions
                .getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
    } else {
        mWidgetLandWidth = providerInfo.minWidth;
        mWidgetPortHeight = providerInfo.minHeight;
        mWidgetPortWidth = providerInfo.minWidth;
        mWidgetLandHeight = providerInfo.minHeight;
    }

    int mWidgetWidthPerOrientation = mWidgetPortWidth;
    int mWidgetHeightPerOrientation = mWidgetPortHeight;
    if (!isPortrait(context)) {
        mWidgetWidthPerOrientation = mWidgetLandWidth;
        mWidgetHeightPerOrientation = mWidgetLandHeight;
    }
    int[] size = new int[2];
    if (AppPreference.isWidgetGraphNativeScaled(context)) {
        size[0] = mWidgetWidthPerOrientation;
        size[1] = mWidgetHeightPerOrientation;
        return size;
    }
    size[0] = dipToPixels(context, mWidgetWidthPerOrientation);
    size[1] = dipToPixels(context, mWidgetHeightPerOrientation);
    return size;
}
 
Example 5
Source File: AppWidgetsRestoredReceiver.java    From LaunchEnr with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Updates the app widgets whose id has changed during the restore process.
 */
static void restoreAppWidgetIds(Context context, PendingResult asyncResult,
        int[] oldWidgetIds, int[] newWidgetIds) {
    final ContentResolver cr = context.getContentResolver();
    final AppWidgetManager widgets = AppWidgetManager.getInstance(context);
    AppWidgetHost appWidgetHost = new AppWidgetHost(context, Launcher.APPWIDGET_HOST_ID);

    for (int i = 0; i < oldWidgetIds.length; i++) {

        final AppWidgetProviderInfo provider = widgets.getAppWidgetInfo(newWidgetIds[i]);
        final int state;
        if (LauncherModel.isValidProvider(provider)) {
            // This will ensure that we show 'Click to setup' UI if required.
            state = LauncherAppWidgetInfo.FLAG_UI_NOT_READY;
        } else {
            state = LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY;
        }

        String[] widgetIdParams = new String[] { Integer.toString(oldWidgetIds[i]) };
        int result = new ContentWriter(context, new ContentWriter.CommitParams(
                "appWidgetId=? and (restored & 1) = 1", widgetIdParams))
                .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i])
                .put(LauncherSettings.Favorites.RESTORED, state)
                .commit();

        if (result == 0) {
            Cursor cursor = cr.query(Favorites.CONTENT_URI,
                    new String[] {Favorites.APPWIDGET_ID},
                    "appWidgetId=?", widgetIdParams, null);
            try {
                if (!cursor.moveToFirst()) {
                    // The widget no long exists.
                    appWidgetHost.deleteAppWidgetId(newWidgetIds[i]);
                }
            } finally {
                cursor.close();
            }
        }
    }

    LauncherAppState app = LauncherAppState.getInstanceNoCreate();
    if (app != null) {
        app.getModel().forceReload();
    }
    asyncResult.finish();
}
 
Example 6
Source File: AppWidgetsRestoredReceiver.java    From Trebuchet with GNU General Public License v3.0 4 votes vote down vote up
/**
 * Updates the app widgets whose id has changed during the restore process.
 */
static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
    final ContentResolver cr = context.getContentResolver();
    final List<Integer> idsToRemove = new ArrayList<Integer>();
    final AppWidgetManager widgets = AppWidgetManager.getInstance(context);

    for (int i = 0; i < oldWidgetIds.length; i++) {
        Log.i(TAG, "Widget state restore id " + oldWidgetIds[i] + " => " + newWidgetIds[i]);

        final AppWidgetProviderInfo provider = widgets.getAppWidgetInfo(newWidgetIds[i]);
        final int state;
        if (LauncherModel.isValidProvider(provider)) {
            // This will ensure that we show 'Click to setup' UI if required.
            state = LauncherAppWidgetInfo.FLAG_UI_NOT_READY;
        } else {
            state = LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY;
        }

        ContentValues values = new ContentValues();
        values.put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i]);
        values.put(LauncherSettings.Favorites.RESTORED, state);

        String[] widgetIdParams = new String[] { Integer.toString(oldWidgetIds[i]) };

        int result = cr.update(Favorites.CONTENT_URI, values,
                "appWidgetId=? and (restored & 1) = 1", widgetIdParams);
        if (result == 0) {
            Cursor cursor = cr.query(Favorites.CONTENT_URI,
                    new String[] {Favorites.APPWIDGET_ID},
                    "appWidgetId=?", widgetIdParams, null);
            try {
                if (!cursor.moveToFirst()) {
                    // The widget no long exists.
                    idsToRemove.add(newWidgetIds[i]);
                }
            } finally {
                cursor.close();
            }
        }
    }
    // Unregister the widget IDs which are not present on the workspace. This could happen
    // when a widget place holder is removed from workspace, before this method is called.
    if (!idsToRemove.isEmpty()) {
        final AppWidgetHost appWidgetHost =
                new AppWidgetHost(context, Launcher.APPWIDGET_HOST_ID);
        new AsyncTask<Void, Void, Void>() {
            public Void doInBackground(Void ... args) {
                for (Integer id : idsToRemove) {
                    appWidgetHost.deleteAppWidgetId(id);
                    Log.e(TAG, "Widget no longer present, appWidgetId=" + id);
                }
                return null;
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
    }

    LauncherAppState app = LauncherAppState.getInstanceNoCreate();
    if (app != null) {
        app.reloadWorkspace();
    }
}
 
Example 7
Source File: ProfileListWidgetProvider.java    From PhoneProfilesPlus with Apache License 2.0 4 votes vote down vote up
private static boolean setLayoutParams(Context context, AppWidgetManager appWidgetManager,
        int appWidgetId, Bundle widgetIdOptions)
{
    String preferenceKey = "isLargeLayout_"+appWidgetId;

    boolean isLargeLayout;

    SharedPreferences preferences = ApplicationPreferences.getSharedPreferences(context);
    if (preferences.contains(preferenceKey))
        // is already saved, use it
        isLargeLayout = preferences.getBoolean(preferenceKey, true);
    else
    {
        // is not saved, compute it

        AppWidgetProviderInfo appWidgetProviderInfo = appWidgetManager.getAppWidgetInfo(appWidgetId);

        int minHeight;
        if (widgetIdOptions != null)
        {
            //int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
            //int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
            minHeight = widgetIdOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
            //int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

            if ((minHeight == 0) && (appWidgetProviderInfo != null))
            {
                minHeight = appWidgetProviderInfo.minHeight;
            }
        }
        else
        {
            if (appWidgetProviderInfo != null)
                minHeight = appWidgetProviderInfo.minHeight;
            else
                minHeight = 0;

            //if (minHeight == 0)
            //	return;
        }

        isLargeLayout = minHeight >= 110;

        Editor editor = preferences.edit();
        editor.putBoolean(preferenceKey, isLargeLayout);
        editor.apply();
    }

    return isLargeLayout;
}
 
Example 8
Source File: AppWidgetsRestoredReceiver.java    From LB-Launcher with Apache License 2.0 4 votes vote down vote up
/**
 * Updates the app widgets whose id has changed during the restore process.
 */
static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
    final ContentResolver cr = context.getContentResolver();
    final List<Integer> idsToRemove = new ArrayList<Integer>();
    final AppWidgetManager widgets = AppWidgetManager.getInstance(context);

    for (int i = 0; i < oldWidgetIds.length; i++) {
        Log.i(TAG, "Widget state restore id " + oldWidgetIds[i] + " => " + newWidgetIds[i]);

        final AppWidgetProviderInfo provider = widgets.getAppWidgetInfo(newWidgetIds[i]);
        final int state;
        if (LauncherModel.isValidProvider(provider)) {
            state = LauncherAppWidgetInfo.RESTORE_COMPLETED;
        } else {
            state = LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY;
        }

        ContentValues values = new ContentValues();
        values.put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i]);
        values.put(LauncherSettings.Favorites.RESTORED, state);

        String[] widgetIdParams = new String[] { Integer.toString(oldWidgetIds[i]) };

        int result = cr.update(Favorites.CONTENT_URI, values,
                "appWidgetId=? and (restored & 1) = 1", widgetIdParams);
        if (result == 0) {
            Cursor cursor = cr.query(Favorites.CONTENT_URI,
                    new String[] {Favorites.APPWIDGET_ID},
                    "appWidgetId=?", widgetIdParams, null);
            try {
                if (!cursor.moveToFirst()) {
                    // The widget no long exists.
                    idsToRemove.add(newWidgetIds[i]);
                }
            } finally {
                cursor.close();
            }
        }
    }
    // Unregister the widget IDs which are not present on the workspace. This could happen
    // when a widget place holder is removed from workspace, before this method is called.
    if (!idsToRemove.isEmpty()) {
        final AppWidgetHost appWidgetHost =
                new AppWidgetHost(context, Launcher.APPWIDGET_HOST_ID);
        new AsyncTask<Void, Void, Void>() {
            public Void doInBackground(Void ... args) {
                for (Integer id : idsToRemove) {
                    appWidgetHost.deleteAppWidgetId(id);
                    Log.e(TAG, "Widget no longer present, appWidgetId=" + id);
                }
                return null;
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
    }
}