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 インスタンスを表示し、ユーザーがそれらをナビゲートできるようにします。
事前にどうもありがとうございました