Android: манифест targetSdkVersion изменилось: иконка не видна, виджет больше не работает и не может получить доступ к данным - PullRequest
2 голосов
/ 20 марта 2010

Я недавно обновил свое приложение 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

Это как если бы обновление вызвало новый процесс, и он не может получить доступ к данным старого процесса или что-то в этом роде.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 10 апреля 2010

эта комбинация обманула:

Затем я добавил пару новых каталогов, таких как drawable-hdpi-v4 и drawable-long-hdpi-v4, которые включают версии графики в высоком разрешении.

удалите директории drawable- -v4 и поместите графику в папки drawable- . Это исправит вашу графику

Что касается других ошибок ... Вы уже проверяли форумы разработчиков Motorola android?

...