2017-12-09 5 views
0

私は特定のファイルやディレクトリを削除するアンドロイドアプリを持っています。このアプリはAPIが23未満のAndroidで動作しますが、API 23以上では動作しません。私はマニフェストパーミッションを書いて、外部のSDカード上のデータを読み書きするための実行時アクセス許可を書きましたが、動作しませんでした.i dexterライブラリで実行時パーミッションを書きましたが、再び動作しませんでした。最後に 私は削除する外部のSDカード上のファイルやディレクトリを削除し、唯一の内蔵SDカード上のディレクトリを削除したいが、再び同じ結果を持っているコードの一部(再びAPI> 23動作しない)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カードが「半永久的」なデバイスであるとみなし、書き込み専用アクセスをアプリのプライベートディレクトリ以外に許可しません。

関連する問題