无法在 Android 7.0 中创建文件夹
Posted
技术标签:
【中文标题】无法在 Android 7.0 中创建文件夹【英文标题】:Can't create folder in Android 7.0 【发布时间】:2017-12-10 04:54:19 【问题描述】:我使用此代码创建文件夹。
File folder2 = new File(Environment.getExternalStorageDirectory() + "/android");
if (!folder2.exists())
folder2.mkdir();
File folder = new File(Environment.getExternalStorageDirectory() + "/Android/MyFolder");
boolean success = true;
if (!folder.exists())
success = folder.mkdir();
它适用于其他设备,但不适用于 android v7.0。
我更改并尝试了 .getAbsolutePath() 和 .getPath(),但这些更改在其他设备上也成功,7.0 仍然没有。
而且清单上有足够的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
请帮助我。感谢您的阅读。
【问题讨论】:
Manifest 权限不算什么,从 6.0+ 开始需要运行时权限才能写入 @EpicPandaForce,谢谢。我现在找到了。 查看此链接:***.com/questions/34342816/… 和 ***.com/a/36937109/1770868 【参考方案1】:public static final int MULTIPLE_PERMISSIONS = 10; // code you want.
String[] permissions= new String[]
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
;
if (checkPermissions())
// permissions granted.
createFolder();
private boolean checkPermissions()
int result;
List<String> listPermissionsNeeded = new ArrayList<>();
for (String p:permissions)
result = ContextCompat.checkSelfPermission(getActivity(),p);
if (result != PackageManager.PERMISSION_GRANTED)
listPermissionsNeeded.add(p);
if (!listPermissionsNeeded.isEmpty())
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),MULTIPLE_PERMISSIONS );
return false;
return true;
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
switch (requestCode)
case MULTIPLE_PERMISSIONS:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
// permissions granted.
createFolder();
else
String permissions = "";
for (String per : permissionsList)
permissions += "\n" + per;
// permissions list of don't granted permission
return;
private void createFolder()
File folder2 = new File(Environment.getExternalStorageDirectory() + "/Android");
if (!folder2.exists())
folder2.mkdir();
File folder = new File(Environment.getExternalStorageDirectory() + "/Android/MyFolder");
boolean success = true;
if (!folder.exists())
success = folder.mkdir();
【讨论】:
谢谢。对于我的问题来说已经足够了。 (Y)【参考方案2】:如果您在 Android 6.0 或更高版本上运行您的应用。您需要询问run time permission 在您的活动文件中添加此请求权限代码
String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (ActivityCompat.checkSelfPermission(MainActivity.this, permission)
!= PackageManager.PERMISSION_GRANTED
)
ActivityCompat.requestPermissions(MainActivity.this, new String[]
permission,123);
【讨论】:
以上是关于无法在 Android 7.0 中创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jackcess 在 Java 中创建一个新的 MS Access 文件
无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源
无法在 Android 11 中创建文件夹(目录),如何创建?
无法使用 PCLStorage 或 Xamarin Forms Labs 在 Android 文件系统中创建文件夹/文件