0

データベースをコピーするためのコード:

        public static final String DB_PATH = Environment.getDataDirectory() + "/data/MyPackageName/databases/";
        public static final String DB_NAME = "MyDB.sqlite";
        private void copyDataBase(String dbPath){
            try{

                InputStream inputStream = context.getAssets().open(dbName);

                OutputStream appDB = new FileOutputStream(dbPath,false);

                byte[] buffer = new byte[1024];
                int length;
                while ((length = inputStream.read(buffer)) > 0) {
                    appDB.write(buffer, 0, length);
                }

                appDB.flush();
                appDB.close();
                inputStream.close();
            }catch(IOException e){
                e.printStackTrace();
            }

        }

このコードは、すべての電話とすべての Android バージョンで正常に動作しますが、上記のコードまたは次の行で、一部の電話 (Galaxy S Plus など) で SQLiteDiskIOException が発生します。

 SQLiteDatabase db = super.getWritableDatabase();

誰もがこの問題で私を助けることができますか?

4

1 に答える 1

0

友人に感謝します。 https://github.com/jgilfelt/android-sqlite-asset-helperで導入された SQLiteAssetHelper を使用して問題を解決しました

于 2012-11-10T13:07:12.820 に答える