【问题标题】:Using sendBroadcast for update android widgets使用 sendBroadcast 更新 android 小部件
【发布时间】:2011-02-07 14:00:46
【问题描述】:

我正在创建一个应用程序小部件,当应用程序的数据库发生某些变化时需要更新它。 我做的事: 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);
    }
}
  1. 在 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>
    
  2. 将广播发送添加到所有数据库更改功能中:

    public static void sendUpdateIntent(Context context) 
    {
        Intent i = new Intent(context, widget_provider.class);
        i.setAction(widget_provider.DATABASE_CHANGED);
        context.sendBroadcast(i);
    }
    

但是当我在数据库中进行更改时,小部件仍然没有更新。 我该怎么办?

【问题讨论】:

    标签: android android-widget android-intent


    【解决方案1】:

    只是猜测查看您的代码,但第一个 " 后面的空格看起来不对

    .... DATABASE_CHANGED = " utimetable.DATABASE_CHANGED";
    

    【讨论】:

    • 似乎是对的......但是还有一件事,也许我正在与为活动制作的意图混合,但是一旦你写了'new Intent(context,widget_provider.class);'您将仅将意图发送到 widget_provider 类...尝试将其删除并使用: new Intent(widget_provider.DATABASE_CHANGED);
    • 好点......在第一个错误之后我没有进一步阅读:-)。还有另一种方法,不要发送意图,而只是更新远程视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2011-05-03
    • 2011-02-14
    相关资源
    最近更新 更多