Ich habe 2 Widgets in meiner App. Beide haben genau die gleichen Funktionen, aber unterschiedliche Layouts. Sie funktionieren auf jedem Gerät einwandfrei, aber auf Samsung-Geräten scheint es ein Problem zu geben. Jedes Mal, wenn ich eine neue Version der App veröffentliche, wird das Widget vom Benutzerbildschirm entfernt. Es sieht so aus, als wäre dies ein Samsung TouchWiz Bug, aber der Benutzer sagt mir, dass andere Apps dieses Problem nicht haben. Irgendeine Idee von was passiert? BTWWidget verschwindet jedes Mal, wenn die App auf Samsung-Geräten aktualisiert wird
Ich dachte für einen Moment, dass ich einen Weg gefunden, um es in dieser Blog-Post zu beheben: https://medium.com/the-wtf-files/the-mysterious-case-of-the-disappearing-widget-f4177a8e2c2b aber ich bin nicht manuell
updateIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
Aufruf Stattdessen Ich rufe
ComponentName cn = neuer Komponentenname (context, clazz); AppWidgetManager.getInstance (Kontext) .updateAppWidget (cn, Ansichten);
um meine Widgets
Mehr von meinem Code zu aktualisieren:
public static final int layout = R.layout.widget_large_layout;
public static final BitmapQualityEnum thumbnailQuality = BitmapQualityEnum.HIGH_RES;
public static final Class<?> clazz = LargeWidgetProvider.class;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
if (context != null && appWidgetIds != null && appWidgetIds.length > 0) {
// To prevent any ANR timeouts, we perform the update in a service
context.startService(new Intent(context, LargeWidgetProvider.UpdateService.class));
}
}
@Override
public void onReceive(Context context, Intent intent) {
if (context != null && intent != null) {
boolean doUpdate = true;
if ("android.appwidget.action.APPWIDGET_UPDATE".equals(intent.getAction())) {
final int[] widgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
doUpdate = (widgetIds != null && widgetIds.length > 0);
}
if (doUpdate) {
WidgetProviderHelper.receive(context, intent, clazz, layout, thumbnailQuality);
}
super.onReceive(context, intent);
}
}
public static class UpdateService extends Service {
private int serviceStartId = -1;
@Override
public boolean onUnbind(Intent intent) {
stopSelf(this.serviceStartId);
return true;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
this.serviceStartId = startId;
// Push update for this widget to the home screen
updateData(this);
return START_STICKY;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// int oldOrientation = this.getResources().getConfiguration().orientation;
// if (newConfig.orientation != oldOrientation) {
// Update the widget) {
updateData(this);
// }
}
@Override
public IBinder onBind(Intent intent) {
// We don't need to bind to this service
return null;
}
}
ich Probleme mit verschwindenden Widgets hatte (und Icons) auf Samsung-Geräten zu und es stellte sich heraus, dass die Aktivierung/Komponenten in meiner App deaktivieren TouchWiz programmatisch (Komponenten in keinem Zusammenhang mit den Widgets selbst) durcheinander. Wenn Sie mehr von Ihrem Widget Code (wie der onReceive/onUpdate) ich könnte es auf mögliche Probleme überprüfen. –
Ich bekomme das Argument "Ihre App hat dieses Problem, aber andere Anwendungen nicht" viel. Das Gegenargument könnte "99.9 % meiner hunderttausenden Benutzer haben dieses Problem nicht, also was ist mit Ihrem Gerät los? ";-). Wenn eine App aus, sagen wir, 200 ein Problem (0,5%) im Vergleich zu 5 Geräten von 100'000 Installationen mit diesem Problem (0,005%) hat, ist die Wahrscheinlichkeit, dass das Gerät ein Problem hat, höher als die der App Problem. Natürlich ist die Wahrheit irgendwo dazwischen und es ist normalerweise eine Kombination von Faktoren). –
@Emanuel Moecklin ist es egal, ob nur ein paar Benutzer das Problem haben. Ja, vielleicht haben 20 Benutzer das Problem von 500K + gemeldet, aber alle haben ein Samsung-Gerät gemeinsam. Außerdem verwenden die meisten Benutzer das App-Widget nicht und die meisten Benutzer beschweren sich nicht über mögliche Probleme. Also ja ich möchte dieses Problem beheben;) – user1026605