我有一個問題非常類似於之前被問過的問題,但不完全一樣。參考文獻:1,2,3,4最小的Android小部件,APPWIDGET_DELETED和APPWIDGET_DISABLED意圖永遠不會被接收
我已經編寫了一個最小的Android窗口小部件,以及APPWIDGET_DELETED
和APPWIDGET_DISABLED
永遠不會被接收。
在上面的參考文獻1和2中,提出的解決方案是實施onReceive
並明確查找這些意圖。不過,我在onReceive
插入了一個日誌調用,並且可以確認這兩個意圖都不會出現,但APPWIDGET_UPDATE
和APPWIDGET_ENABLED
正如預期的那樣出現在日誌中。爲了仔細檢查這一點,我還插入了onDeleted
和onDisabled
的最小實現,它們的主體僅由super
的調用組成,它們的斷點放在它們上面,而這些決不會到達。
引用3似乎已經解決了他的問題,只需卸載並重新安裝他的應用程序,但這對我而言無效。事實上,我已經在多個仿真器圖像以及實際設備上嘗試了這一點,其中一些是新鮮的,之前從未有過之前的版本,並且此問題仍然存在。
根據參考文獻中的回覆說這些解決方法對他們有效,還有大量的在線教程使用了onDeleted
和onDisabled
方法,但沒有提到它們實際上不起作用,我會假設我必須做錯事,而這在Android中並不是一個錯誤。
這是我最小的manifest文件:
<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);
}
}
擺脫'android:exported =「false」'。它的應用程序小部件不應該在那裏工作。您需要輸出此'',以便操作系統可以與之通話。 –
CommonsWare
謝謝!這樣做,如果你提供你的評論作爲答案,我會接受它! – AndroidSlinger