首页 > 解决方案 > Android:重新安装我的应用程序后无法访问我的应用程序创建的文件

问题描述

我有在共享存储中创建文件的应用程序,我使用MediaStore创建和读取文件,我的应用程序成功创建和读取文件,但是在我再次卸载并重新安装后,我的应用程序无法访问之前创建的文件,即使我检查使用文件管理器文件仍然存在。那么,重新安装后如何访问卸载前创建的文件?谢谢

这是我创建文件的代码

String db_name = c.getString(R.string.db_name);
String backupDbName = "backup-"+utility.getCurrentDateTimeNoSpace()+"-"+db_name;
File currentDB = c.getDatabasePath(db_name);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst;
ParcelFileDescriptor pfd = null;

ContentResolver resolver = c.getContentResolver();
Uri uri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
ContentValues values = new ContentValues();
values.put(MediaStore.Files.FileColumns.DISPLAY_NAME, backupDbName);
values.put(MediaStore.Files.FileColumns.TITLE, backupDbName);
values.put(MediaStore.Files.FileColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS + File.separator
                    + c.getString(R.string.app_name)+ "-" + BACKUP + File.separator + DATABASE);
Uri fileUri = resolver.insert(uri, values);
pfd = resolver.openFileDescriptor(fileUri, "w", null);
dst = new FileOutputStream(pfd.getFileDescriptor()).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
if(pfd != null) pfd.close();

这是读取文件的代码

@RequiresApi(api = Build.VERSION_CODES.Q)
private Cursor getFiles(String folderName){
    String[] projection = new String[]{MediaStore.Files.FileColumns._ID, MediaStore.Files.FileColumns.DISPLAY_NAME};

    String selection = MediaStore.Files.FileColumns.RELATIVE_PATH+" = ? OR "
            + MediaStore.Files.FileColumns.RELATIVE_PATH +" = ?";

    String rel_path = Environment.DIRECTORY_DOCUMENTS + File.separator
            + c.getString(R.string.app_name)+ "-" + BACKUP + File.separator + folderName;

    ContentResolver resolver = c.getContentResolver();
    Uri uri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);

    return resolver.query(uri, projection, selection,
            new String[]{rel_path + File.separator, rel_path}, null);
}

标签: androidfilemediastore

解决方案


推荐阅读