0

我需要在 Android 11(api 级别 30)上打开一个大型 SQLite 数据库。文档说“MANAGE_EXTERNAL_STORAGE”是未来的问题。

因此,我在https://developer.android.com/training/data-storage/shared/documents-files阅读了文档并使用了:

public void openDirectory(Uri uriToLoad) {
    // Choose a directory using the system's file picker.
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);

    startActivityForResult(intent, 42);
}

@Override
public void onActivityResult(int requestCode, int resultCode,
        Intent resultData) {
    if (requestCode == 42
            && resultCode == Activity.RESULT_OK) {
        // The result data contains a URI for the document or directory that
        // the user selected.
        Uri uri = null;
        if (resultData != null) {
            uri = resultData.getData();
            DocumentFile dfile = DocumentFile.fromTreeUri(this, uri);
            DocumentFile[] fileList = dfile.listFiles();
            
        }
    }
}

如果我正确理解文档,则文件已弃用或不能与 SD 卡上的文件一起使用,而 DocumentFile/URI 是新事物。但是要打开我使用的数据库:

SQLiteDatabase.openDatabase(
        pFile.getAbsolutePath(),
        null,
        SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READONLY))

所以我的问题是:如何使用 URI 或 DocumentFile 打开大型(10Gb 或更多)数据库。

Ps.:数据库是带有地图图像的 RasterLite 文件

4

0 回答 0