簡體   English   中英

從未收到最小的Android小部件,APPWIDGET_DELETED和APPWIDGET_DISABLED意圖

[英]Minimal Android widget, APPWIDGET_DELETED and APPWIDGET_DISABLED intents never being received

我的問題與之前提出的問題非常相似,但並不完全相同。 參考文獻: 1234

我編寫了一個最小的Android小部件,從未收到APPWIDGET_DELETEDAPPWIDGET_DISABLED

在上面的參考文獻1和2中,提出的解決方案是實現onReceive並明確地查找那些意圖。 但是,我在onReceive插入了一個日志調用,並且可以確認這些意圖都沒有出現,盡管APPWIDGET_UPDATEAPPWIDGET_ENABLED按預期出現在日志中。 為了仔細檢查這一點,我還插入了onDeletedonDisabled最小實現,它們的主體僅包含對super放置的斷點的調用,並且永遠不會到達。

參考3似乎通過簡單地卸載並重新安裝他的應用程序解決了他的問題,但在我的情況下這是無效的。 事實上,我已經在多個模擬器圖像以及實際設備上嘗試了這一點,其中一些是新鮮的,以前從未有過以前的版本,這個問題仍然存在。

基於參考文獻中的回答說這些變通方法對他們起作用,以及使用onDeletedonDisabled方法的大量在線教程,但沒有提及它們實際上沒有用,我將假設我必須做某事錯了,這不是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.

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