3
사용자가 런처를 통해 홈 페이지 나 화면을 수동으로 추가하지 않고 위젯을 자동으로 추가하는 방법을 찾으려고합니다. (가능하면 둘 다 가능하지만 최소한 잠금 화면까지).앱 설치시 Android Widget 추가
다음은 위젯을 홈 화면에 추가해야하는 항목입니다. 내가 뭘 놓치고 있니?
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);
}
}
}