通过意图将数据从服务传递到窗口小部件

时间:2012-05-02 20:04:08

标签: android android-widget

我有一个服务,它调用意图将自定义文本发送到我的AppWidgetProvider。为此,我使用onRecieve方法并检查正确的操作。

所以我有两个问题,第一个是,这是正确的方法,第二个问题是我的onReceive方法永远不会被调用吗?

我在以下部分添加了清单

<receiver android:label="KreativBarometer Widget"
   android:name=".widget.MyWidgetProvider" >
   <intent-filter >
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
   </intent-filter>
   <meta-data
       android:name="android.appwidget.provider"
       android:resource="@xml/widget_info" />
 </receiver>

我的AppWidgetProvider使用以下onReceive方法

public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals("APPWIDGET_UPDATE")){
        String text = intent.getStringExtra("newItemArrived");
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        views.setTextViewText(R.id.TextView01, text);
    }
    super.onReceive(context, intent);
}

并且用于测试我使用此意图

Intent intent = new Intent("APPWIDGET_UPDATE");
intent.putExtra("newItemArrived", "Neue Frage erschienen");
sendBroadcast(intent);

1 个答案:

答案 0 :(得分:0)

我认为您必须修改清单文件以包含两件事:

  1. <receiver>中的另一个操作,表示您有意图进入您的小部件

  2. 注册您的服务。

  3. 也许这段视频很有用:https://youtu.be/DJsNmS-PvD8?t=2m7s