J'ai récemment mis à jour mon application Android pour prendre en charge plusieurs résolutions. Auparavant, mon dossier Android.manifest avait une ligne:Android: manifestSdkVersion changement conduit à: icône non visible, le widget ne fonctionne plus, et ne peut plus accéder aux données
Pour soutenir plusieurs dispositifs de densité et de résolution, je l'ai changé cela:
<supports-screens
android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"
/>
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
J'ai ensuite ajouté deux nouveaux répertoires, comme drawable -hdpi-v4 et drawable-long-hdpi-v4 qui inclut les versions haute résolution des graphiques. C'est à peu près ça.
Depuis la publication de ce jour, il y a eu un nombre décent d'utilisateurs se plaignant de divers problèmes:
- l'icône de l'application ne semble pas (je n'ai pas créé une version haute résolution de l'icône)
le widget écran d'accueil ne fonctionne plus, même s'il est supprimé et ajouté (ce code n'a pas changé avec la mise à jour). J'ai eu me envoyer un utilisateur leur journal d'erreurs, ce qui montre:
03-19 20:59:41.617 W/ActivityManager(1854): Unable to launch app com.alt12.babybump/10078 for broadcast Intent { action=android.appwidget.action.APPWIDGET_UPDATE flags=0x4 comp={com.alt12.babybump/com.alt12.babybump.WidgetGirl} (has extras) }: process is bad
Il y a une section discutable dans mon code widget existant qui peut être pertinente:
@Override
public void onReceive(Context context, Intent intent) {
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[] { appWidgetId });
}
} else {
super.onReceive(context, intent);
}
}
Et peut-être le plus gênant: the sqlite database is no longer accessible/writeable for some users so their data is no longer available
. J'ai ajouté la permission WRITE_EXTERNAL_STORAGE
au manifeste. Cela arrive seulement à certains utilisateurs et il a tendance à être des utilisateurs de HTC Eris. Dans ce journal des erreurs que je vois des choses telles que:
03-19 16:00:56.173 E/FlurryAgent(4791): java.io.FileNotFoundException: /data/data/com.alt12.babybump/files/.flurryagent.-2333f5cb
03-19 16:00:56.173 E/FlurryAgent(4791): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:231)
03-19 16:01:09.393 E/Database(4791): sqlite3_open_v2("/data/data/com.alt12.babybump/databases/uitematmamad.db", &handle, 6, NULL) failed
03-19 16:01:09.393 W/System.err(4791): android.database.sqlite.SQLiteException: unable to open database file
Il est comme si la mise à jour a provoqué un nouveau processus et il ne peut pas accéder aux données de l'ancien processus, ou quelque chose.
Toute aide appréciée!