web-dev-qa-db-ja.com

ユーザーがファイルを保存するパスを選択できるようにするAndroid

私はクライアント用に1つのアプリケーションを開発していますが、行き詰まっている小さな機能が1つあるので、助けが必要です。

シナリオ:ユーザーがカテゴリごとに画像、曲、ビデオのリストを表示できる1つのリサイクルビューを開発しました。ユーザーは、画像、オーディオ、またはビデオを表示または聞くための1つのオプションを利用できます。それをダウンロードする別のオプションです。

ヘルプが必要@ユーザーがすべてのファイルを保存できる1つの静的パスでこれを実行しましたが、クライアントはユーザーがファイルを保存するパスを選択できるようにしたいので、ユーザーが選択できるファイルダイアログが必要ですロケーション。

注: 1つの静的パスに対してこれを実行し、正常に機能していることに注意してください。また、後で使用できるようにそのパスをローカルデータベースに保存しているので、残りはユーザーがファイルを保存する場所を選択できるようにするにはどうすればよいですか?

11
Vickyexpert

Android DirectoryChooser は、ファイルを保存するディレクトリを選択するのに役立ちます。

マニフェスト

DirectoryChooserActivityを宣言し、Android.permission.WRITE_EXTERNAL_STORAGE権限をリクエストする必要があります。

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
...
<application>
    <activity Android:name="net.rdrei.Android.dirchooser.DirectoryChooserActivity" />
</application>

アクティビティ

ディレクトリを選択するには、アプリロジックからアクティビティを開始します。

 final Intent chooserIntent = new Intent(this, DirectoryChooserActivity.class);

    final DirectoryChooserConfig config = DirectoryChooserConfig.builder()
            .newDirectoryName("DirChooserSample")
            .allowReadOnlyDirectory(true)
            .allowNewDirectoryNameModification(true)
            .build();

    chooserIntent.putExtra(DirectoryChooserActivity.EXTRA_CONFIG, config);

// REQUEST_DIRECTORY is a constant integer to identify the request, e.g. 0
startActivityForResult(chooserIntent, REQUEST_DIRECTORY);

onActivityResultメソッドで結果を処理します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_DIRECTORY) {
        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            handleDirectoryChoice(data
                .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
        } else {
            // Nothing selected
        }
    }
}
11