1
   @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory){
         File externalFilesDir = Environment.getExternalStorageDirectory();
         if(externalFilesDir == null) 
                return null;
         File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
         return SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
    }

上記のコードを使用して、db ファイルを外部ストレージに書き込みます。したがって、 に保存され/mnt/sdcard/ます。Android 2.3.5で試してみると動作します。しかし、Android 4 では動作しません。しかし、それでもエラーは発生しません。

4

1 に答える 1

2

同じものを探している他の人への答えは次のとおりです。

 // ======= This will allow to create the DB in /mnt/sdcard/
    // External folder DB access for Android 4+
       @Override
       public SQLiteDatabase openOrCreateDatabase(String name, int mode,CursorFactory factory, DatabaseErrorHandler errorHandler) {
             File externalFilesDir = Environment.getExternalStorageDirectory();
             if(externalFilesDir == null) 
                    return null;
             File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
             return super.openOrCreateDatabase(dbFile.getAbsolutePath(), Context.MODE_WORLD_WRITEABLE, null, errorHandler);
       }

       // External folder DB access for Android 2.3
    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory){
         File externalFilesDir = Environment.getExternalStorageDirectory();
         if(externalFilesDir == null) 
                return null;
         File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
         return SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
    }
于 2012-06-04T13:00:04.287 に答える