今晚我正在做一些我认为很简单的事情......在/ mnt / sdcard中创建一个文件夹。
我已设置以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
我的Main.java
有以下内容来制作文件夹:
public class Main extends TabActivity {
static int index = 1;
private static final String TAG = "Main";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File folder = new File(Environment.getExternalStorageDirectory () + "/tallgrass/images");
boolean success = false;
if(!folder.exists()){
success = folder.mkdir();
}
if (!success){
Log.d(TAG,"Folder not created.");
}
else{
Log.d(TAG,"Folder created!");
}
}
我得到了“文件夹创建!”我的日志中的邮件,但当我同时检查/mnt/sdcard
和/sdcard
时,都没有该文件夹。我试过打电话:
Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
然后返回true。我只是想不出这个,因为所有迹象都表明它应该有效。我已经尝试将手机与PC断开连接以防SD卡正在安装或者我正在使用手机而不是模拟器进行开发。说到debuggable
到true
可能会阻止它制作文件夹吗?
谢谢!
答案 0 :(得分:42)
/mnt/sdcard/tallgrass/
目录是否存在? (我猜不是,但你永远不知道。)
File.mkdirs()
方法将创建所有需要的目录; mkdir()
只会在路径名中创建 last 目录。
答案 1 :(得分:0)
检查他们必须以这种方式放置权限的位置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.una.info.app">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<activity
android:name="edu.una.info.SplashScreenActivity"
答案 2 :(得分:0)
尝试使用其他设备。我的仿真器设备存在问题,但是当我连接 Oneplus 5T 时,它创建了一个文件夹(我的Oneplus没有外部MicroSD)。
但是同时,我的模拟器( Pixel 3 )根本不创建文件夹。
至少这些权限都很好。