アナログ時計を表示するウィジェットがあります。私が欲しいのは、ユーザーがウィジェットをクリックしたときにウィジェットがデータベースに書き込むことです。すでにdatabaseHelperクラスがあり、現在の日付と時刻を示す画面を表示し、データベースに時刻を書き込むアクティビティがあります。
私はここのチュートリアルに従いました:アナログ時計のチュートリアルそしてこれで終わりました:
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
this.mIntent = new Intent(context, AskTheTime.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
}
AskTheTimeクラスは、アクティビティを拡張し、onCreate()でデータベースにログを記録します。ただし、これは、ウィジェットが開始された時刻のみが表示され、クリックされた時刻は表示されないことを意味します。(これは、pendingIntentを開始しているためだと思います)データベース書き込みを別のメソッドに配置する必要があるのか、ウィジェットからこの種のことを行うためにIntentsを使用する必要があるのかわかりません。どんなポインタも素晴らしいでしょう!インテントについていくつかのチュートリアルを見てきましたが、どれも私にはあまり明確に見えません。