我正在尝试在外部microSD卡上创建文件夹,但它无法正常工作。
String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain";
Toast.makeText(Second.this,sdpath,Toast.LENGTH_LONG).show();
File file = new File(sdpath);
if(!file.exists()){file.mkdirs();
Toast.makeText(Second.this,"Created path",Toast.LENGTH_LONG).show();
}
我也添加了所有权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
并构建gradle app,如下所示
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "jss.intentgame"
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
现在停止在卡片上创建文件夹是什么?
答案 0 :(得分:0)
首先,new File()
不会创建文件。它会创建一个File
对象。您的问题没有用于创建文件或目录的代码。
其次,Environment.getExternalStorageDirectory().getAbsolutePath()+"/sdcard/Ankur Jain"
在大多数(如果不是全部)Android设备上都不会指向“外部microSD卡”。这指向您尝试在external storage上创建的某个子目录。
第三,您在Android 4.4 +上没有removable storage的任意访问权限。
如果您想允许用户使用可移动存储,请在Android 4.4及更高版本上使用the Storage Access Framework。在此之前,没有针对可移动存储的Android SDK支持。
答案 1 :(得分:0)
让我分享您可以看到的基本工作代码并进行相应的尝试。希望这可以帮助您创建文件夹。
public class AppConst{
private static String APPLICATION_PATH = Environment.getExternalStorageDirectory().getPath();
private static String DIR_HOME = “YourRootDirName”;
private static String IMAGE_HOME = “SubDirectoryName”;
private static String getApplicationPath() {
return (APPLICATION_PATH + "/");
}
public static String getRootPath() {
return (getApplicationPath() + DIR_HOME + "/");
}
public static String getImageAbsolutePath() {
return getRootPath() + IMAGE_HOME + "/";
}
}
public class StorageManager {
public static void verifyImagePath() {
File imageDirectory = new File(AppConst.getImageAbsolutePath());// It use the path that we define in constant file.
if (!imageDirectory.exists()) {
imageDirectory.mkdir();
}
}
}
}
现在在您的应用程序中,找出您要开始创建文件夹的位置,并在下面的代码中写下。
StorageManager. verifyImagePath();
上述语句确实在存储选项的定义位置创建了文件夹。
注意:确保您必须提供读/写权限 在您的应用程序清单文件中。如果您在棉花糖中运行该应用程序 设备确保您授予您的读/写权限 应用
答案 2 :(得分:0)
我有办法解决我的问题。获取存储设备列表,修剪其路径,我们将获得SD卡存储的绝对路径。用普通的mkdris创建文件夹。这是代码。
File[] externalStorageFiles = ContextCompat.getExternalFilesDirs(MainActivity.this, null);
storagepath = new String[externalStorageFiles.length]; for (int i = 0; i < externalStorageFiles.length; i++) {
storagepath[i] = externalStorageFiles[i].toString();
System.out.println(storagepath[i]);
}
答案 3 :(得分:0)
将代码更改为getPath()而不是getAbsolutePath()。在我的情况下处理所有条件。
Environment.getExternalStorageDirectory().getPath()