0

Android 5 では、SD カードを操作するための新しい API が導入されています。SC カードのディレクトリにファイルを書き込みたい場合は、そこにアクセスする必要があります。私の知る限り、次の方法で実行できます。

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

その後:

public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    if (resultCode == RESULT_OK) {
        Uri treeUri = resultData.getData();

        getActivity().getContentResolver().takePersistableUriPermission(treeUri,
                    Intent.FLAG_GRANT_READ_URI_PERMISSION |
                    Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
     }
}

このコードはフォルダー ピッカーを起動します。フォルダーが選択されると、Uri によるフォルダーに対するアクセス許可が必要になります。

しかし、パスによって正確なディレクトリのアクセス許可を取得することは可能ですか? フォルダ ピッカーを使用せずに。私は、アクセスしたいディレクトリを知っていることを意味し、ユーザーを混乱させるため、フォルダ ピッカーを起動したくありません。

DocumentFileユーザーの操作なしで開くには?

4

1 に答える 1

2

それは不可能だ。ユーザーは、Android のファイル ピッカーを使用してディレクトリを選択する必要があります。フォルダーにアクセスする唯一の方法は、次を使用することです。

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

ファイルは Storage Access Framework DocumentsProvider によって提供されるためです。実際には、実際のファイルではなく、サードパーティのアプリがファイルとして提示するエンティティであるサードパーティのアプリから Uri を返すことができます。

于 2015-05-28T08:07:23.480 に答える