0

どの日、私は問題に苦しんでいて、すでにインターネット全体を読んでいます. ストレージ アクセス フレームワークを使用していますが、サブディレクトリ内のファイルを削除できません。

メモリーカード内にフォルダ(/storage/1B15-0D11/Data)があります。このフォルダーに対するアクセス許可をユーザーに求めています。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, 999);

public void onActivityResult(int requestCode, int resultCode,
                         Intent resultData) {
 if (resultCode == Activity.RESULT_OK) {
    if (requestCode == 999) {
        if (resultData != null) {
            Uri treeUri=resultData.getData();
            //Log.d(TAG, "SELECT_DIR_REQUEST_CODE resultData = " + resultData);
            getContentResolver().takePersistableUriPermission(treeUri, (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION));

このフォルダの構造:

Data->Data1->Data2->file.txt

/storage/1B15-0D11/Data/Data1/Data2 パスにファイル (file.txt) があることはわかっています。

しかし、すべてのサブフォルダーを通過せずに削除する方法がわかりません。

次のように削除できます。

List<UriPermission> permissions = getContentResolver().getPersistedUriPermissions();
if (permissions != null && permissions.size() > 0) {
   DocumentFile dir = DocumentFile.fromTreeUri(this, permissions.get(0).getUri());
   DocumentFile dir2 = dir.findFile("Data1");
   DocumentFile dir3 = dir2.findFile("Data2");
   DocumentFile file = dir3.findFile("file.txt");
   if (file != null) {file.delete();}
}

できます。しかし、それはまさに私が必要としているものではありません。

「/storage/1B15-0D11/Data/Data1/Data2/file.txt」という形式のファイル パスがあります。すべてのサブフォルダーを通過せずに削除するにはどうすればよいですか?

このようにしてみました。しかし、それはうまくいきません。正しい回線 URI ではないことが判明しました。

DocumentFile dir = DocumentFile.fromTreeUri(this, Uri.parse("content://com.android.externalstorage.documents/tree/1B15-0D11%3AData%2FDat1%2FDat2"));
DocumentFile file = dir.findFile("text.txt"); //return null


                
4

1 に答える 1