簡體   English   中英

Android:未調用Widget onReceive()

[英]Android: Widget onReceive() not getting called

我有一個小部件,其布局具有imageView。 該視圖需要根據某些活動進行更改。 因此,每當發生這種情況時,我都會在將動作設置為UPDATE_WIDGET情況下調用sendBroadcast() 但是,未調用小部件代碼中的onReceive() 下面是我的代碼。

public class TaskWidget extends AppWidgetProvider {
    ...
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "widget update", 2000).show();
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.searchwidget);
        if (intent.getAction().equals(UPDATE_WIDGET)) {
            views.setImageViewResource(R.id.newImage, R.drawable.Pic1);
        }
        super.onReceive(context, intent);
    }
}

在清單中

<receiver
    android:name="com.rahul.testwidget.TaskWidget"
    android:label="Task Widget" >
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        <action android:name="com.rahul.UPDATE_WIDGET" />
    </intent-filter>

    <meta-data
        android:name="android.appwidget.provider"
        android:resource="@xml/widget" />
</receiver>

您必須使用super.onReceive(context, intent);之前的代碼來更新小部件布局super.onReceive(context, intent);

ComponentName widget = new ComponentName(context, SimpleWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(widget, views);

我認為您的操作名稱必須為com.rahul.UPDATE_WIDGET而不是UPDATE_WIDGET

如果要從窗口小部件上的偵聽器發送廣播,則需要為廣播創建PendingIntent。

PendingIntent sentPI = PendingIntent.getBroadcast(activity, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

另外,您似乎無法將2個待處理的意圖附加到小部件中的按鈕。

暫無
暫無

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

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