更新プログラムを手動で起動する必要があります。これを行う1つの方法は、ブロードキャストインテントをAppWidgetProvider
に送信することです。アプリのウィジェットの変更によって表示されたデータは、お使いのContentProvider
は、単にMyAppWidgetProvider.sendRefreshBroadcast(getContext())
を呼び出すことができます
public class MyAppWidgetProvider extends AppWidgetProvider {
private static final String REFRESH_ACTION = "com.mypackage.appwidget.action.REFRESH";
public static void sendRefreshBroadcast(Context context) {
Intent intent = new Intent(REFRESH_ACTION);
intent.setComponent(new ComponentName(context, MyAppWidgetProvider.class));
context.sendBroadcast(intent);
}
@Override
public void onReceive(final Context context, Intent intent) {
final String action = intent.getAction();
if (REFRESH_ACTION.equals(action)) {
// refresh all your widgets
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
ComponentName cn = new ComponentName(context, ScheduleWidgetProvider.class);
mgr.notifyAppWidgetViewDataChanged(mgr.getAppWidgetIds(cn), R.id.widget_list);
}
super.onReceive(context, intent);
}
...
}
。
あなたは基本的にウィジェットのビューを更新する方法を知っていますか? –
はい、ここにサンプルを掲載しています - https://developer.android.com/guide/topics/appwidgets/index.html contentproviderデータが変更されたときにウィジェットのアップデートを行う方法の詳細が必要です。 – Ravs