![](/img/trans.png)
[英]AppWidget Update Service does not stop on Widget being Deleted from host
[英]Minimal Android widget, APPWIDGET_DELETED and APPWIDGET_DISABLED intents never being received
我的問題與之前提出的問題非常相似,但並不完全相同。 參考文獻: 1 , 2 , 3 , 4
我編寫了一個最小的Android小部件,從未收到APPWIDGET_DELETED
和APPWIDGET_DISABLED
。
在上面的參考文獻1和2中,提出的解決方案是實現onReceive
並明確地查找那些意圖。 但是,我在onReceive
插入了一個日志調用,並且可以確認這些意圖都沒有出現,盡管APPWIDGET_UPDATE
和APPWIDGET_ENABLED
按預期出現在日志中。 為了仔細檢查這一點,我還插入了onDeleted
和onDisabled
最小實現,它們的主體僅包含對super
放置的斷點的調用,並且永遠不會到達。
參考3似乎通過簡單地卸載並重新安裝他的應用程序解決了他的問題,但在我的情況下這是無效的。 事實上,我已經在多個模擬器圖像以及實際設備上嘗試了這一點,其中一些是新鮮的,以前從未有過以前的版本,這個問題仍然存在。
基於參考文獻中的回答說這些變通方法對他們起作用,以及使用onDeleted
和onDisabled
方法的大量在線教程,但沒有提及它們實際上沒有用,我將假設我必須做某事錯了,這不是Android中的錯誤。
這是我的最小清單文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.testwidgets">
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<receiver android:label="Test Widget"
android:name="com.test.testwidgets.TestWidgetProvider"
android:exported="false">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/test_widget_info"/>
</receiver>
</application>
</manifest>
這是我的最小java源代碼:
public class TestWidgetProvider extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
Log.w("Schedule", "On receive " + intent.getAction());
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int widgetId : appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.test_widget);
appWidgetManager.updateAppWidget(widgetId, views);
}
}
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
}
}
需要導出AppWidgetProvider
,以便協調應用程序小部件(主機和提供程序之間)的核心OS進程可以與之通信。 因此, android:exported="false"
是inapropos。
說實話,我不希望與提供商合作,而只是一些活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.