私は何とか解決策を得た数日を見つけています。だから私は私の考えを共有しています。
このサイトは私にとって非常に役に立ちました。
http://kasperholtze.com/android/how-to-make-a-simple-android-widget/
私はいくつかの変更を加え、自分の仕事をしました。
要件ソリューション:
1. Receiver を作成し、このようにマニフェスト許可に入れます。
<receiver
android:name=".WatchWidget"
android:label="WatchWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/watch_widget_provider" />
</receiver>
2.私の側では、TextViewのトップクリックが必要なので、TextView IDを使用して作成できますonUpdate()
。
remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget_lay);
Intent intent = new Intent(context, TestActivity.class);
intent.setAction("callActivity");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
remoteViews.setOnClickPendingIntent(R.id.widget_textview, pendingIntent);
appWidgetManager.updateAppWidget(new ComponentName(context,WatchWidget.class), remoteViews);
3.データベースを呼び出してレコードを取得し、表示したい。さて、更新について質問しますか?
そのため、タイマー クラスを使用し、1000 秒ごとに実行しました。これは、ウィジェットが常に 30 分更新されるためです (可能性があります)。
@Override
public void onUpdate( final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds )
{
this.appWidgetManager = appWidgetManager;
try {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager,appWidgetIds), 1, 1000);
} catch (Exception e) {
System.out.println("Exception:");
}
updateSwitch1(context, appWidgetManager, appWidgetIds[0]);
}
クエリがある場合は、コメントを入力してください。この回答を役立つように完全にサポートしてくれたすべての人に感謝します。