SO-03D 4.0アップデート後のEメールアプリの不具合&対処
先日のdocomo SO-03D acro HD の 4.0 アップデートで、プリインストールアプリの「連絡先」と「Eメール」が調子が悪くなった。
- 「連絡先」は起動したら「問題が発生したためExchangeサービスを終了します」のダイアログがでて、しばしば落ちる
- 「Eメール」は起動したら、それ自体が異常終了して使えない
状態。ググっても類似例が出てこないので、環境依存か端末依存なレアケースと思われ。
PCに繋げて、開発環境(eclipse + SDK の LogCat)で何の異常か覗いてみたところ、こんな例外が。
Caused by: android.database.sqlite.SQLiteException: Can't downgrade database from version 31 to 30
なにかのSQLite DBファイルの扱いでこけているようなので、試しにアプリのデータを削除。
設定メニュー→「アプリ」→上のタブを横スクロールさせて「すべて」→「Eメール」→「データを削除」ボタン
結果、エラー無く起動するように。
「エラー出るのが気持ち悪い」ってだけだったので、さくっとデータ削除で丸く収まりましたとさ。
参考:元の例外は次の通り。
07:38:02.646: E/AndroidRuntime(9356): FATAL EXCEPTION: AsyncTask #1 07:38:02.646: E/AndroidRuntime(9356): java.lang.RuntimeException: An error occured while executing doInBackground() 07:38:02.646: E/AndroidRuntime(9356): at android.os.AsyncTask$3.done(AsyncTask.java:278) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07:38:02.646: E/AndroidRuntime(9356): at java.lang.Thread.run(Thread.java:856) 07:38:02.646: E/AndroidRuntime(9356): Caused by: android.database.sqlite.SQLiteException: Can't downgrade database from version 31 to 30 07:38:02.646: E/AndroidRuntime(9356): at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:307) 07:38:02.646: E/AndroidRuntime(9356): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:168) 07:38:02.646: E/AndroidRuntime(9356): at com.android.email.provider.EmailProvider.getDatabase(EmailProvider.java:882) 07:38:02.646: E/AndroidRuntime(9356): at com.android.email.provider.EmailProvider.query(EmailProvider.java:1880) 07:38:02.646: E/AndroidRuntime(9356): at android.content.ContentProvider$Transport.query(ContentProvider.java:178) 07:38:02.646: E/AndroidRuntime(9356): at android.content.ContentResolver.query(ContentResolver.java:311) 07:38:02.646: E/AndroidRuntime(9356): at com.android.email.Controller$6.run(Controller.java:711) 07:38:02.646: E/AndroidRuntime(9356): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:552) 07:38:02.646: E/AndroidRuntime(9356): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:550) 07:38:02.646: E/AndroidRuntime(9356): at android.os.AsyncTask$2.call(AsyncTask.java:264) 07:38:02.646: E/AndroidRuntime(9356): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07:38:02.646: E/AndroidRuntime(9356): ... 4 more 07:38:02.676: E/JavaBinder(9356): *** Uncaught remote exception! (Exceptions are not yet supported across processes.) 07:38:02.676: E/JavaBinder(9356): android.database.sqlite.SQLiteException: Can't downgrade database from version 31 to 30 07:38:02.676: E/JavaBinder(9356): at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:307) 07:38:02.676: E/JavaBinder(9356): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:168) 07:38:02.676: E/JavaBinder(9356): at com.android.email.provider.EmailProvider.getDatabase(EmailProvider.java:882) 07:38:02.676: E/JavaBinder(9356): at com.android.email.provider.EmailProvider.query(EmailProvider.java:1880) 07:38:02.676: E/JavaBinder(9356): at android.content.ContentProvider$Transport.query(ContentProvider.java:178) 07:38:02.676: E/JavaBinder(9356): at android.content.ContentResolver.query(ContentResolver.java:311) 07:38:02.676: E/JavaBinder(9356): at com.android.email.service.AccountService$1.getAccountList(AccountService.java:60) 07:38:02.676: E/JavaBinder(9356): at com.android.email.service.AccountService$1.reconcileAccounts(AccountService.java:81) 07:38:02.676: E/JavaBinder(9356): at com.android.emailcommon.service.IAccountService$Stub.onTransact(IAccountService.java:68) 07:38:02.676: E/JavaBinder(9356): at android.os.Binder.execTransact(Binder.java:338) 07:38:02.676: E/JavaBinder(9356): at dalvik.system.NativeStart.run(Native Method)