2011-01-10 13 views
8

何らかの理由により、this articleに記載されているデータベース処理ソリューションが、OTA 2.2.1アップデート(1.72)後にHTC Desire HDで動作しません.405.3)。アップデート前にDesire HDで動作していました。2.1、2.2を実行している実際のデバイスや、すべてのバージョンを実行しているエミュレータでエラーを再現できませんでした。Android 2.2.1(Desire HD 1.72.405.3)でデータベース処理が停止しました

残念ながら、Android 2.2.1を実行しているエミュレータ用にAVDを作成することはできません。2.2.1に基づいてROMを試しましたが(私は根っこの普通のHTC Desireを持っています)、私のアプリケーションは問題なく動作します。だから問題は、何らかの方法でAndroid SDKを使用している場合、それが突然問題を引き起こすべきではないかということです。

私はこれが非常に具体的な問題だと知っていますが、問題を報告している私より多くの開発者と、AVDを作成できないという事実から、私はその質問が受け入れられ、問題。

ここでは、ユーザが自分の市場のアカウントに送信されたスタックトレースです:

Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error 
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2049) 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1917) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:889) 
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168) 
at com.MyApp.DataBaseHelper.createDataBase(DataBaseHelper.java:81) 
at com.MyApp.InitialActivity.onCreate(InitialActivity.java:33) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2797) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1066) 

関連法はペーストビンで見つけることができます。 1つのハイパーリンクのみが含まれるので、リンクは下記のコメントにあります。スタックトレースに見つかった81行は、pastebinの10行目です。

+0

http://pastebin.com/VTmCkeLq –

+0

同じ問題について他のユーザーからのコメントは、このコメントと以下で読むことができます:http://www.reigndesign.com/blog/using-your-own-sqlite -database-in-android-applications/comment-page-4 /#comment-43655 –

+0

は新しいAndroid 2.2.1バージョンでは使用できないロケールen_USですか? AndroidのソースであるSQLiteDatabase.setLocale: "@ロケールを設定できなかった場合はSQLExceptionが発生します。これが最も一般的な理由は、要求したロケールで使用可能な照合がないためです。 –

答えて

5

最終的に私のアプリがDesire HDのAndroid 2.2.1で動作するようになったようです。私は問題を引き起こしていることを正確に試してみるために、個人的にそれをデバッグする機会はありませんでした。

ポップアップされた1つの考えは、データベースファイルが配置されているハードコーディングされたパスです。 DB_PATH = "/ data/data/YOUR_PACKAGE/databases /";

このパスはAndroid 2.2.1 for Desire HDで有効ではない可能性があります。私はこのパスを次のように交換しました: Environment.getDataDirectory()+ "/ data/YOUR_PACKAGE/databases /" + DB_NAME;

私は実際の電話で自分自身をテストする機会があったときに問題を指摘しようとします。誰かがこのソリューションをテストするなら、それが解決すれば教えてください。

0

だけでなく、ビョルンから優秀な答えは、このリンクは私のために働いていた:それはそう

Link on AndDev.org

あなたがspecificly this.getReadableDatabaseのリターンを()閉じる必要があります。

関連する問題