我正在创建一个appwidget,当应用程序的数据库中有些更改时需要更新。 我所做的: 1.创建工作小部件 2.覆盖onReceive方法:
public static final String DATABASE_CHANGED = " utimetable.DATABASE_CHANGED";
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (action.equals(DATABASE_CHANGED) || action.equals(Intent.ACTION_DATE_CHANGED))
{
AppWidgetManager gm = AppWidgetManager.getInstance(context);
int[] ids = gm.getAppWidgetIds(new ComponentName(context, widget_provider.class));
this.onUpdate(context, gm, ids);
}
else
{
super.onReceive(context, intent);
}
}
在AndroidManifest中:
<receiver android:name=".widget_provider" android:label="@string/widget_today_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="utimetable.DATABASE_CHANGED" />
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_row" />
</receiver>
将广播发送添加到所有数据库更改功能中:
public static void sendUpdateIntent(Context context)
{
Intent i = new Intent(context, widget_provider.class);
i.setAction(widget_provider.DATABASE_CHANGED);
context.sendBroadcast(i);
}
但是当我在DB中进行更改时,小部件仍未更新。 我该怎么办?
答案 0 :(得分:2)
只是猜测看你的代码,但是在第一次看起来错误之后的那个空间
.... DATABASE_CHANGED = " utimetable.DATABASE_CHANGED";