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)