1

カスタム テキストを AppWidgetProvider に送信するインテントを呼び出すサービスがあります。このために、onRecieve メソッドを使用して、正しいアクションをチェックします。

2 つの質問があります。1 つ目はこれが正しい方法であるか、2 つ目は 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);
4

2 に答える 2

0

マニフェスト ファイルを変更して、次の 2 つを含める必要があると思います。

  1. <receiver>ウィジェットにインテントが入っていることを示すもう 1 つのアクション

  2. サービスを登録します。

おそらく、このビデオは役に立つでしょう: https://youtu.be/DJsNmS-PvD8?t=2m7s

于 2016-04-04T10:31:49.917 に答える