2017-07-06 3 views
2

Ich benutze diesen Code Ordner zu erstellen.erstellen Ordner kann nicht 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(); 
     } 

Es funktioniert mit anderen Geräten, aber nicht mit Android v7.0.

ich geändert und versuchte, mit .getAbsolutePath() und .getPath(), aber diese Veränderung aber auch Erfolg auf anderen Geräten, 7.0 immer noch nicht.

Und aslo gab es genug Berechtigungen für manifest

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Bitte helfen Sie mir. Danke fürs Lesen.

+1

Manifest Erlaubnis ist nichts, Sie Runtime Erlaubnis seit 6.0 für Schreib brauchen + – EpicPandaForce

+0

@EpicPandaForce, Danke. Ich habe es jetzt gefunden. –

+1

Siehe diesen Link: https: //stackoverflow.com/questions/34342816/android-6-0-multiple-permissions/37546500#37546500 und https://stackoverflow.com/a/36937109/1770868 –

Antwort

2
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(); 
     } 
} 
+0

Dank. Genug und vollständig für mein Problem. (Y) –

0

, wenn Sie Ihre App über Android 6.0 laufen oder onwards.you müssen fragen run time permission hinzufügen Anfrage Erlaubniscode in Ihnen Aktivitätsdatei

String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE; 
      if (ActivityCompat.checkSelfPermission(MainActivity.this, permission) 
        != PackageManager.PERMISSION_GRANTED 
        ) { 
       ActivityCompat.requestPermissions(MainActivity.this, new String[] 
         {permission},123); 

      } 
Verwandte Themen