7

Android 5.0 (API レベル 21) で導入されたDirectory Selection APIを使用して、ユーザーがファイルを保存するディレクトリを選択できるようにします。

ディレクトリを選択するには、次のコードのように ACTION_OPEN_DOCUMENT_TREE インテントを作成して送信します。

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

次のポップアップが表示されます。

ここに画像の説明を入力

ただし、ユーザーに ACTION_OPEN_DOCUMENT インテントを使用してファイルを選択させると:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, FILE_CHOOSER_ACTIVITY_REQUEST_CODE);

次に、次のポップアップが表示されます。

ここに画像の説明を入力

Android 5.0.1 Nexus Tab 10 でテストしています。ACTION_OPEN_DOCUMENT_TREE と ACTION_OPEN_DOCUMENT を使用してルートの場所が異なるのはなぜですか? サブツリーの選択をサポートするのは、Internal Storage Document Provider インスタンスのみでしょうか?

また、ユーザーが ACTION_OPEN_DOCUMENT_TREE を使用して Google ドライブ ディレクトリを選択できるようにしたいと考えています。

ACTION_OPEN_DOCUMENT_TREE と ACTION_OPEN_DOCUMENT の両方のリファレンスは次のように述べています。

呼び出されると、システムはデバイスにインストールされているさまざまな DocumentsProvider インスタンスを表示し、ユーザーがそれらをナビゲートできるようにします。

事前にどうもありがとうございました

4

4 に答える 4

8

私の最後の結果はあなたのものとまったく同じです。つまり、Googleドライブでサブツリーを選択できません。

OPEN_DOCUMENT_TREE に関するAndroid の公式サンプルに基づく: システムは、サブツリーの選択をサポートするすべての DocumentsProvider インスタンスを表示します。

その理由は、Google Drive DocumentsProvider インスタンスがハンドル OPEN_DOCUMENT_TREE をまだサポートしていないためだと思います。

于 2015-03-20T00:46:23.983 に答える
0

何年経ってもまだサポートされていません...

于 2020-02-01T11:03:35.170 に答える
0

ディレクトリ/ファイル チューザーをアプリに実装する方法を探していましたが、いくつかの検索の後、ダイアログ ピッカー全体を自分で構築するよりもライブラリを使用する方が効率的であると結論付けました。

最終的にhttps://github.com/TutorialsAndroid/FilePicker
を使用 することになりました。私の場合はこれで十分です。使いやすく、かなり軽量です。

Google 検索の「ディレクトリ ピッカー アンドロイド ライブラリ」は、より多くのオプションを提供します。

于 2020-03-31T19:43:48.007 に答える