Pelancar tersuai Android menambah widget tersuai, tetapi antara muka widget tidak boleh dikemas kini Widget tersuai boleh dikemas kini pada pelancar sistem seperti jam boleh dikemas kini pada pelancar tersuai.
Kod AppWidgetProvider adalah seperti berikut:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(new Date());
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setTextViewText(R.id.tv_update, dateStr);
Log.i("TAG","--"+dateStr);
appWidgetManager.updateAppWidget(new ComponentName(context, WidgetProvider.class),views);
}
Kod yang berkaitan dengan pelancar tersuai adalah seperti berikut
Dibuat dalam onCreate,
//得到com.test包名的所有widegt,并且分配一个appwidgetId,保存起来
mAppWidgetHost = new AppWidgetHost(MainActivity.this, HOST_ID);
mAppWidgetHost.startListening();
mAppWidgetManager = AppWidgetManager.getInstance(MainActivity.this);
List<AppWidgetProviderInfo> providers = mAppWidgetManager.getInstalledProviders();
for (int i = 0; i < providers.size(); i++) {
ComponentName provider = providers.get(i).provider;
if (provider.getPackageName().contains("com.test")) {
surfAppWidgetList.add(providers.get(i));
surfAppWidgetIdList.add(mAppWidgetHost.allocateAppWidgetId());
LogUtil.printlf("-->" + provider.getPackageName());
}
}
//intent里面可以传入
mAppWidgetIds=new int[surfAppWidgetIdList.size()];
Kemudian tambahkannya pada reka letak induk dalam gelung
AppWidgetHostView hostView = mAppWidgetHost.createView(this, surfAppWidgetIdList.get(i), surfAppWidgetList.get(i));
addView(hostView);
Apa masalahnya?
Sudah diselesaikan. Perlu melakukan bindAppWidgetId();
Dan bindAppWidgetId memerlukan kebenaran sistem. Anda mesti menaik taraf aplikasi anda sendiri kepada aplikasi sistem.