无法在 Android 7.0 中创建文件夹
Can't create folder in Android 7.0
我使用此代码创建文件夹。
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" />
请帮助我。感谢阅读。
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();
}
}
如果您运行您的应用高于Android 6.0 或onwards.you需要询问run time permission在您的activity文件中添加此请求权限代码
String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (ActivityCompat.checkSelfPermission(MainActivity.this, permission)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]
{permission},123);
}
我使用此代码创建文件夹。
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" />
请帮助我。感谢阅读。
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();
}
}
如果您运行您的应用高于Android 6.0 或onwards.you需要询问run time permission在您的activity文件中添加此请求权限代码
String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
if (ActivityCompat.checkSelfPermission(MainActivity.this, permission)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]
{permission},123);
}