Я недавно обновил свое приложение Android для поддержки нескольких разрешений. Ранее мой файл Android.manifest содержал строку:
Для поддержки устройств с несколькими плотностями и разрешением я изменил это на:
<supports-screens
android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"
/>
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
Затем я добавил пару новых каталогов, таких как drawable-hdpi-v4 и drawable-long-hdpi-v4, которые включают версии графики с высоким разрешением. Вот и все.
С момента выпуска этого обновления приличное количество пользователей жалуется на различные проблемы:
- значок приложения не отображается (я не создал версию значка в высоком разрешении)
виджет домашнего экрана больше не работает, даже если они удаляют и повторно добавляют его (этот код не изменился с обновлением). Пользователь отправил мне свой журнал ошибок, который показывает:
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
В моем существующем коде виджета есть один сомнительный раздел:
@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);
}
}
И, пожалуй, самое неприятное: the sqlite database is no longer accessible/writeable for some users so their data is no longer available
. Я добавил разрешение WRITE_EXTERNAL_STORAGE
в манифест. Это происходит только с определенными пользователями, и это, как правило, пользователи HTC Eris. В этом журнале ошибок я вижу такие вещи, как:
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
Это как если бы обновление вызвало новый процесс, и он не может получить доступ к данным старого процесса или что-то в этом роде.
Любая помощь приветствуется!