I'm trying to find a way to automatically add a widget without making the user add it manually via the launcher to the home page or lock screen (preferably both, but at minimum to the lock screen).
Here's what I have to add the widget to the home screen. What am I missing?
public class MyWidgetProvider extends AppWidgetProvider {
private static final String ACTION_CLICK = "ACTION_CLICK";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
ComponentName thisWidget = new ComponentName(context,
MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
final List<AppWidgetProviderInfo> infos = appWidgetManager.getInstalledProviders();
AppWidgetProviderInfo appWidgetInfo = null;
for (final AppWidgetProviderInfo info : infos) {
Log.v("AD3", info.provider.getPackageName() + " / "
+ info.provider.getClassName());
}
for (final AppWidgetProviderInfo info : infos) {
if (info.provider.getClassName().equals(thisWidget.getClassName()) && info.provider.getPackageName().equals(thisWidget.getPackageName())) {
appWidgetInfo = info;
break;
}
}
if (appWidgetInfo == null)
return; //stop here
for (int widgetId : allWidgetIds) {
int number = (new Random().nextInt(100));
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
Log.w("WidgetExample", String.valueOf(number));
remoteViews.setTextViewText(R.id.update, String.valueOf(number));
Intent intent = new Intent(context, MyWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
}