Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中写入SD卡总是返回False_Android_Android Sdcard - Fatal编程技术网

在android中写入SD卡总是返回False

在android中写入SD卡总是返回False,android,android-sdcard,Android,Android Sdcard,大家好,我必须用下面的代码将我的sqlite数据库复制到下载中。但是如果(sd.canWrite())总是返回false。。。我被困在这个问题上了,是的,我已经添加到我的清单上了。我在真实设备上调试,而不是在虚拟设备上调试。我需要帮助 private void copyDbToExternal(Context context) { try { File sd = Environment.getExternalStorageDirectory(); File

大家好,我必须用下面的代码将我的sqlite数据库复制到下载中。但是如果(sd.canWrite())总是返回false。。。我被困在这个问题上了,是的,我已经添加到我的清单上了。我在真实设备上调试,而不是在虚拟设备上调试。我需要帮助

private void copyDbToExternal(Context context) {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()){
            String currentDBPath = "//data//data//" + context.getApplicationContext().getPackageName() + "//databases//"
                    + "qamatrisdb";
            String backupDBPath = "qamatrisdb";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

您的代码与SD卡无关。您的代码正在写入,而不是

如果
canWrite()
返回
false
,您可能缺少
WRITE\u EXTERNAL\u STORAGE
权限,或者您可能将
targetSdkVersion
设置为23或更高,并且未处理Android 6.0+运行时权限


另外,请将现有的
currentDBPath
逻辑替换为。

您是否尝试过在Dev.Android上使用教程

访问外部存储器的示例:

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

是的,我必须写入外部存储器。。。我已经得到了canwrite false:(@keikoman:很可能是您的
元素位于错误的位置,或者您的
targetSdkVersion
为23或更高: