我发现几天我以某种方式得到了解决方案。所以我分享我的想法。
这个网站对我非常有用。
http://kasperholtze.com/android/how-to-make-a-simple-android-widget/
我做了一些改变并完成了我的工作。
需求解决方案:
1. 像这样制作Receiver并放入manifest权限。
<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 in 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]);
}
如果有任何疑问,请发表评论,并感谢所有给予我全力支持以使此答案有用的人。