有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Android上的可访问文件夹中创建文件?(非根)

我可以使用

File directory = cw.getDir("media", Context.MODE_PRIVATE);
 //directory.mkdirs();
 File backupDB = new File(directory, backupname);

我也试过了

 File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"images");

 File backupDB = new File(directory, backupname);

如果运气不好,这就是完整的方法

   public String backUpDatabase(String backupname){

      try {
       File directory = new File(String.valueOf(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)));
            File currentDB = new File(DBlocation);
            File folder = new File("/sdcard/exports/Database_Backups/");
            File backupDB = new File(directory, backupname);

            if (!(folder.exists() && folder.isDirectory())) {
                folder.mkdirs();
            }

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
            else{
                return "didnt work";
            }

        } catch (Exception e) {
          return "didnt work";
        }

        return backupname.toString();

    }

我用过权限是的

<uses-permission 安卓:name="安卓.permission.WRITE_EXTERNAL_STORAGE" />

我只想将数据库文件备份到一个可访问的文件中,然后在手机/电脑上看到它


共 (1) 个答案

  1. # 1 楼答案

    要在android棒棒糖和更高版本上写入外部存储,您需要request permission at run time.

    这里有三种方法很重要:

    1. ContextCompat.checkSelfPermission()检查是否授予了权限
    2. ActivityCompat.requestPermissions()如果未授予许可,则请求
    3. onRequestPermissionsResult()在用户授予权限后执行所需的操作

    Refer to this answer for the code and details