我在第一个活动打开时编写此代码的内容,并且我还在运行时获得了用户权限。
权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"
tools:ignore="ProtectedPermissions" />
代码:
private void createFolder()
{
File myFolder=new File(Environment.getExternalStorageDirectory(),"MyFolder");
if (!myFolder.exists()){
myFolder.mkdirs();
if (!myFolder.exists()&&myFolder.isDirectory()){
File myChild=new File(musicVideo.getAbsolutePath(),"MyChild");
if (!myFolder.exists()){
myChild.mkdirs();
}
}
}else {
if (!myFolder.exists()&&!myFolder.isDirectory()){
File myChild=new File(myFolder.getAbsolutePath()+File.separator+"MyChild");
if (!myFolder.exists()){
myChild.mkdirs();
}
}else {
Toast.makeText(this, "fail", Toast.LENGTH_SHORT).show();
}
Toast.makeText(this, "fail", Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:1)
剩下的就是在运行时请求用户权限
您可以使用如下实用程序方法: 在执行操作之前检查是否已授予权限
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
return true;
} else {
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
}
}
确保 Activity 实现 onRequestPermissionsResult
编辑 由于您在评论部分的要求,您的条件测试中有很多错误。使用 createFolder()
创建目录和子目录 MyFolder 和 MyChild使用:
private void createFolder()
{
File myFolder=new File(Environment.getExternalStorageDirectory(),"MyFolder");
if(!myFolder.exists() || myFolder.isFile()){
if(myFolder.isFile()){
Toast.makeText(getApplicationContext(), "'MyFolder' exists as file", Toast.LENGTH_LONG).show();
return;
}
try{
myFolder.mkdir();
File myChild=new File(myFolder.getAbsolutePath()+File.separator+"MyChild");
myChild.mkdir();
Toast.makeText(getApplicationContext(), "Directories created successfully", Toast.LENGTH_SHORT).show();
} catch(Exception e){
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
在你的实现中:
isStoragePermissionGranted();
createFolder();
第一行验证存储权限是否被授予 第二个创建文件夹