2016-08-11 4 views
0

디렉토리와 파일을 장치에 만들고 싶습니다.android File.mkdirs()는 항상 false를 반환합니다.

하지만 File.mkdirs()가 항상 false를 반환하는 경우 ... 나는 이유를 모르겠다!

난 같은 매니페스트에 권한을 추가 한 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pkg.pkg.pkg"> 

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

을이 내 코드입니다 : 문제는 무엇

File directory = null; 
File file = null; 
String dir = ""; 
String folderName = "test"; 

String sdcard = Environment.getExternalStorageState(); 

if(sdcard.equals(Environment.MEDIA_MOUNTED)){ 
    dir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
} else { 
    dir = Environment.getRootDirectory().getAbsolutePath(); 
} 

directory = new File(dir, folderName); 

if(!directory.exists()) { 
    directory.mkdirs(); // return false here. 
} 

if(directory.isDirectory()){ 

    file = new File(directory.getAbsolutePath(), fileName); 
    if(file.exists()){ 
     String tempFileName = et_export.getText().toString(); 

     // Check duplicate file name 
     for(int i=1;;i++){ 
      fileName = tempFileName + " (" + i + ").png"; 
      file = new File(directory.getAbsolutePath(), fileName); 
      if(!file.exists()) break; 
     } // for 

    } // if(file.exists()) 

} // if(directory.isDirectory()) 

...? 응용 프로그램이 실행되는 동안 안드로이드 6.0 (API 레벨 23) 년부터

+0

에서 조각입니다. – Vito

+0

'directory.mkdirs();'더 좋으면'if (! directory.mkdirs()) return;도 아직 축배를 표시 할 수 있습니다. – greenapps

답변

0

https://developer.android.com/training/permissions/requesting.html

, 사용자는 응용 프로그램을 설치하지 않을 경우 앱에 권한을 부여합니다.

권한 부여 부분을 수동으로 코딩해야합니다 (매니페스트에 정의하는 것 외에).

다음은 여기에 몇 가지 로그를 넣을 수 있습니다 developer.android.com

if (ContextCompat.checkSelfPermission(thisActivity, 
       Manifest.permission.WRITE_EXTERNAL_STORAGE) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
      Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 

     // Show an expanation to the user *asynchronously* -- don't block 
     // this thread waiting for the user's response! After the user 
     // sees the explanation, try again to request the permission. 

    } else { 

     // No explanation needed, we can request the permission. 

     ActivityCompat.requestPermissions(thisActivity, 
       new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
       MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); 

     // MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE is an 
     // app-defined int constant. The callback method gets the 
     // result of the request. 
    } 
} 
+0

감사합니다. 작품입니다. –

관련 문제