2017-07-06 27 views
2

このコードを使用してフォルダを作成します。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(); 
     } 

これは、他のデバイスでの作業ではなく、アンドロイドV7.0とされます。

.getAbsolutePath()と.getPath()で変更して試しましたが、他のデバイスでもこれらの変更が成功しています。

そしてaslo

は私を助けてくださいマニフェスト

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

に十分な権限がありました。読んでくれてありがとう。

+1

マニフェスト許可は何もありませんあなたの活動ファイルをこの要求の許可コードを追加し、あなたが6.0以降書き込み用のランタイム許可を必要とします+ – EpicPandaForce

+0

@EpicPandaForce、ありがとうございます。私は今それを見つけた。 –

+1

このリンクを参照してください:https://stackoverflow.com/questions/34342816/android-6-0-multiple-permissions/37546500#37546500およびhttps://stackoverflow.com/a/36937109/1770868 –

答えて

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

ありがとうございました。私の問題のために十分で完全です。 (Y) –

0

あなたは、Android 6.0の上にアプリを実行したり、onwards.youが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); 

      } 
関連する問題