簡體   English   中英

通過意圖將數據從服務傳遞到小部件

[英]Pass data from a service to widget via intents

我有一個服務,它調用一個向我的 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. <receiver>中的另一項操作,表明您有意圖加入小部件

  2. 注冊您的服務。

也許這段視頻會有用: https : //youtu.be/DJsNmS-PvD8?t=2m7s

要傳遞自定義日期,您需要使用 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM