と を作りましapplication
たwidget
。アプリケーションから更新するwidget
必要があります。つまり、データをウィジェットに送信します。sendBroadcast(Intent intent)
アプリからの方法を使用しました。onReceive(Context context, Intent intent)
MyWidgetProviderアプリのメソッドで好評です。データを取得できますが、onUpdate()
メソッドが機能していないようで、ウィジェットの UI がありません。
これはウィジェットアプリのコードです
public class MyWidgetProvider extends AppWidgetProvider {
public String team1name;
public String team2name;
public String team1score;
public String team2score;
public static boolean done=false;
public void onReceive(Context c, Intent intent){
Bundle extras = intent.getExtras();
if (extras == null) {
return;
}
team1name = extras.getString("team1name");
team2name = extras.getString("team2name");
team1score = extras.getString("team1score");
team2score = extras.getString("team2score");
done=true;
}
private static final String ACTION_CLICK = "ACTION_CLICK";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
// Get all ids
ComponentName thisWidget = new ComponentName(context,MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
Log.e("WidgetExample", "The victory is mine");
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
// Set the text
remoteViews.setTextViewText(R.id.update, team1name);
// Register an onClickListener
Intent i = new Intent(context, MyWidgetProvider.class);
i.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0, i, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}