Android 在外部SD卡中创建文件

Android 在外部SD卡中创建文件,android,file,storage,android-sdcard,sd-card,Android,File,Storage,Android Sdcard,Sd Card,我是android开发的新手。 我想在我的外部SD卡中创建一个文件。我搜索了很多,尝试了不同的代码。但它是在设备存储中创建的,或者根本不创建。 我得到我的SD卡路径,它在/mnt/extSdCard中。 我甚至尝试了几种代码,但没有一种代码不起作用。 此代码找到了我的SD卡位置: public static String getExternalSdCardPath() { String path = null; File sdCardFile = null; List

我是android开发的新手。 我想在我的外部SD卡中创建一个文件。我搜索了很多,尝试了不同的代码。但它是在设备存储中创建的,或者根本不创建。 我得到我的SD卡路径,它在/mnt/extSdCard中。 我甚至尝试了几种代码,但没有一种代码不起作用。 此代码找到了我的SD卡位置:

 public static String getExternalSdCardPath() {
    String path = null;

    File sdCardFile = null;
    List<String> sdCardPossiblePath = Arrays.asList("external_sd", "ext_sd", "external", "extSdCard");

    for (String sdPath : sdCardPossiblePath) {
        File file = new File("/mnt/", sdPath);

        if (file.isDirectory() && file.canWrite()) {
            path = file.getAbsolutePath();
            Log.i("LOG", "path is: " + path);

            String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
            File testWritable = new File(path, "test_" + timeStamp);
            if (testWritable.mkdirs()) {
                testWritable.delete();
            } else {
                path = null;
            }
        }
    }

    if (path != null) {
        sdCardFile = new File(path);
    } else {
        sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
    }
    return sdCardFile.getAbsolutePath();
}
public静态字符串getExternalSdCardPath(){
字符串路径=null;
文件sdCardFile=null;
List-sdCardPossiblePath=Arrays.asList(“外部”、“外部”、“外部”、“外部sd卡”);
用于(字符串sdPath:sdCardPossiblePath){
File File=新文件(“/mnt/”,sdPath);
if(file.isDirectory()&&file.canWrite()){
path=file.getAbsolutePath();
Log.i(“Log”,“path是:”+path);
字符串时间戳=新的SimpleDateFormat(“ddMMyyyy_HHmmss”)。格式(新日期();
文件testWritable=新文件(路径“test_u2;”+时间戳);
if(testWritable.mkdirs()){
testWritable.delete();
}否则{
path=null;
}
}
}
if(路径!=null){
sdCardFile=新文件(路径);
}否则{
sdCardFile=新文件(Environment.getExternalStorageDirectory().getAbsolutePath());
}
返回sdCardFile.getAbsolutePath();
}

路径是我的位置。

您可以使用
context.getApplicationContext().getExternalFilesDirs()
获取可用字符串路径的数组,包括您想要的字符串路径。但是,它仅在Android 4.4+中可用。

您可以使用
context.getApplicationContext().getExternalFilesDirs()
获取可用字符串路径数组,包括您想要的字符串路径。但是,它仅在Android 4.4+中可用。

下面是如何使用代码设置SD卡路径,如果您没有SD卡,Android将只在内部存储器中存储数据 首先在启动活动中声明此变量

public static String THE_PATH;
然后在onCreate捆绑包中的同一活动中调用此方法onAvail()

(!state.equals(Environment.MEDIA\u MOUNTED\u READ\u))){

我希望您有一个DBHelper类,下面是该类中发生的情况

import static <app name here>.MainActivity.THE_PATH;

 // Variable str is set in MainActivity as Public static
// to be accessible in the DBHelper Class 

下面是如何使用代码设置SD卡路径,如果您没有SD卡,Android将只在内部存储器中存储数据 首先在启动活动中声明此变量

public static String THE_PATH;
然后在onCreate捆绑包中的同一活动中调用此方法onAvail()

(!state.equals(Environment.MEDIA\u MOUNTED\u READ\u))){

我希望您有一个DBHelper类,下面是该类中发生的情况

import static <app name here>.MainActivity.THE_PATH;

 // Variable str is set in MainActivity as Public static
// to be accessible in the DBHelper Class 

你检查并请求权限吗?当然可以,在“是”处获取战利品。它是“写入外部存储”,可能是在设备存储中创建的副本,但在extSdCard中写入失败。它不适用于我@valiasergeev。你检查并请求权限吗?当然可以,在“是”处获取战利品。它是“写入外部存储”,可能是重复的在设备存储中创建,但在extSdCard中写入失败。它对我不起作用@valiasergev
public static final String DB_NAME = THE_PATH +"PassWord";