【发布时间】:2016-02-29 12:02:32
【问题描述】:
我正在制作一个 Android 应用程序,我需要在存储磁盘卡上创建文件夹。 我的主要活动课程: 我添加了三个按钮,每次单击都是写入一个文件夹。 我的程序正在执行,但 Toast 消息是“未创建目录”。 我检查了我的存储磁盘卡,它在那里,我还在清单中添加了用户权限。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final boolean isSDWritable = SDcard.isExternalStorageWritable();
buttonDownlaod = (Button) findViewById(R.id.activity_main_directoryDownload);
buttonPictures = (Button) findViewById(R.id.activity_main_directoryPictures);
buttonMovies = (Button) findViewById(R.id.activity_main_directoryMovies);
buttonDownlaod.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isSDWritable) {
getStorageDir(Environment.DIRECTORY_DOWNLOADS, "MyDownlaods");
}
}
});
buttonMovies.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isSDWritable) {
getStorageDir(Environment.DIRECTORY_MOVIES, "MyMovies");
}
}
});
buttonPictures.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isSDWritable) {
getStorageDir(Environment.DIRECTORY_PICTURES, "MyPictures");
}
}
});
}
public File getStorageDir(String inBuiltDir, String folderName) {
String inBuiltdir = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(inBuiltDir, folderName);
if (!file.mkdirs()) {
Toast.makeText(this, "Directory is not created", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Folder Name" + folderName + "Created", Toast.LENGTH_SHORT).show();
}
return file;
}
} // Update code formatting
任何人都可以帮助解决代码中的问题,这就是未创建目录的原因。
【问题讨论】:
-
您是否有权写入清单文件中声明的外部存储??
-
是的,我确实获得了许可。我在清单文件中声明..
-
代码现在运行良好。刚刚实现了 getExternalFilesDir() 而不是 getExternalStorageDirectory()。
-
啊,是的,有了新的 android 操作系统规范,它会强制您在标记为存储应用程序特定文件的位置创建文件