【问题标题】:Pass data from a service to widget via intents通过意图将数据从服务传递到小部件
【发布时间】:2012-05-02 20:04:07
【问题描述】:

我有一个服务,它调用一个向我的 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);

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

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

    1. 在您的&lt;receiver&gt; 中再执行一项操作,表明您有进入小部件的意图

    2. 注册您的服务。

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

    【讨论】:

      【解决方案2】:

      要传递自定义日期,您需要使用 Bundle:

      val intent = Intent(context, ItemsCollectionRemoteViewsService::class.java)
                  .apply {
                      val extrasBundle = Bundle()
                      extrasBundle.putSerializable(WIDGET_DATA, widgetData)
                      putExtra(WIDGET_Bundle_DATA, extrasBundle)
                  }
              remoteViews.setRemoteAdapter(R.id.items_list_view, intent)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-16
        • 2015-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 2021-10-12
        • 1970-01-01
        相关资源
        最近更新 更多