2015-10-06 27 views
7

Napotkano dziwne zachowanie na niektórych urządzeniach po dodaniu nowego wystąpienia appwidget na ekranie głównym.AppWidget: instancja nie jest wyświetlana po zakończeniu działania konfiguracji na niektórych urządzeniach

Mam aplikację AppWidget z działaniem konfiguracyjnym. Jak zostało powiedziane w tutorialowej aktualizacji aplikacji, muszę zrobić to sam.

public static void updateWidgetAndSendIntent (Activity activity, int mAppWidgetId, boolean isUpdate) { 
    updateWidgets(activity); 
    if (!isUpdate) { 
     Intent resultIntent = new Intent(); 
     resultIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); 
     activity.setResult(Activity.RESULT_OK, resultIntent); 
     activity.finish(); 
    } 
} 

    public static void updateWidgets(Context context) { 
    new ManagerUpdateWidget(context).updateAllWidgetInstances(); 
} 

ManagerUpdateWidget.java

public void updateAllWidgetInstances() { 

    Bitmap widget = getCustomView(context); 

    for (int widgetId : appWidgetIds) { 
     updateCurrentInstance(widgetId, widget); 
    } 
} 

Faktem jest, że na Samsung Galaxy Note 2 (GT-N7100) z Androida 4.4.2 wszystko jest ok, ale na Samsung Galaxy Note 3 (SM-N900) z Androidem 5.0 Mam "widmową" aplikację, nie prawdziwą appawidget na ekranie głównym, ale te "widmowe", kiedy nie widzisz appwidget na ekranie, ale w aplikacji masz już identyfikator aplikacji i regularne aktualizacje. Testowałem moją aplikację na emulatorach genymotion (Android 4.3 i 5.0), ale wszystko było również w porządku.

Proszę, zasugeruj mi, jak naprawić ten dziwny błąd.

+0

Czy możesz wyjaśnić, co oznacza "widmowa" aplikacja? –

+0

[Ta] (http://stackoverflow.com/a/8866791/4600792) odpowiedź może ci pomóc. –

+0

to kolejny błąd, nie mój. Widzę mój widget w "liście widżetów" i mogę uruchomić Aktywność Konfiguracji, ale po zakończeniu konfiguracji nie widzę nowej instancji na ekranie głównym. W moim przypadku wydarzyło się to tylko w Notatce 3, w Notatniku 2 uruchomiony jest ok. –

Odpowiedz

0

Radzenie sobie z widmami "widmowymi" to koszmar. Czy możesz zaktualizować wszystkie instancje za pomocą updateAppWidget (ComponentName provider, RemoteViews views)?
Zgodnie z dokumentacją ta metoda ustawi RemoteViews do użycia dla wszystkich instancji AppWidget dla dostarczonego dostawcy AppWidget.

AppWidgetManager manager = AppWidgetManager.getInstance(context); 
ComponentName component = new ComponentName(context, MyAppWidgetProvider.class); 
manager.updateAppWidget(component, remoteViews); 
+0

wewnątrz metody updateCurrentInstance, którą zaproponowałem ... To mi nie pomogło –