2016-05-24 16 views
1

launcher3アプリにウィジェットを追加しようとしていますが、別のプロセスで実行されているcontentproviderからデータを受け取り、それをウィジェットのリストビューに表示します。ウィジェットは、contentproviderデータが変更されるたびにリストビュー項目を更新する必要があります。私はこの作品の仕組みを理解するためのサンプルを探しています。誰かがこれについてのリンクやサンプルを教えてくれますか?contentproviderデータの変更に基づくAndroidアプリウィジェットの更新

+0

あなたは基本的にウィジェットのビューを更新する方法を知っていますか? –

+0

はい、ここにサンプルを掲載しています - https://developer.android.com/guide/topics/appwidgets/index.html contentproviderデータが変更されたときにウィジェットのアップデートを行う方法の詳細が必要です。 – Ravs

答えて

1

更新プログラムを手動で起動する必要があります。これを行う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); 
    } 

    ... 
} 

関連する問題