2017-12-09 3 views
0

특정 파일이나 디렉토리를 삭제하는 Android 앱이 있습니다.이 앱은 23 미만의 API로 Android에서 작동하지만 API 23 이상에서는 작동하지 않습니다. manifest 권한을 썼고 외부 sdcard에서 데이터를 읽고 쓸 수있는 런타임 권한을 썼습니다.하지만 작동하지 않았습니다 .i dexter 라이브러리에서 런타임 권한을 썼지 만 다시 작동하지 않았습니다. 내가 외부의 sdcard에있는 파일과 디렉토리를 삭제하고 전용 (다시 API는> 23 작동하지) 같은 결과가 다시 내부 SD 카드에 디렉토리를 삭제하고 싶은 코드API 레벨> = 23에서 파일 또는 디렉토리를 삭제하려면 어떻게해야합니까?

public double deleteFileOrDirectory(String fileOrDirectory) { 
    File FOD = new File(fileOrDirectory); 
    if (FOD.exists() && FOD.isFile() && FOD.canWrite()) { 
     FOD.delete(); 
    } else if (FOD.exists() && FOD.isDirectory() && FOD.canRead()) { 
     String fileList[] = FOD.list(); 
     if (fileList != null && fileList.length == 0) { 
      FOD.delete(); 
      // return 0; 
     } else if (fileList != null && fileList.length > 0) { 
      for (int i = 0; i < fileList.length; i++) { 
       File temp_f = new File(FOD.getAbsolutePath() + "/" + fileList[i]); 
       if (temp_f.isDirectory()) 
        deleteFileOrDirectory(temp_f.getAbsolutePath()); 
       else if (temp_f.isFile()) 
        temp_f.delete(); 
      } 

     } 
     if (FOD.exists()) 
      if (FOD.delete()) { 
       //return 0; 
      } 
    } 
    // return -1; 
    double[] v = volumCalcultor(); 
    return v[2]; 

} 

의 일부를 삭제 마침내 은 내가 삭제할 모든 안드로이드 장치 용 파일 - 적어도 특정 권한이있는 내부 메모리에서 디렉토리를 삭제하고 싶습니다.

답변

1

API23 +는 외부 SD 카드를 '반영구적 인'기기로 간주하므로 앱 전용 디렉토리 외부에 쓰기 권한을 부여하지 않습니다.