問題タブ [documentfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 11: DocumentFile findFile() が遅すぎる
今回の Google のストレージ ポリシーの更新により、ファイルの保存方法を変更する必要がありました。
まず、私のアプリケーションは以前にプロジェクト フォルダーを /sdcard/ に保存しました。しかし、このポリシーにより、File を使用したアクセスが不可能になり、いくつかの方法を試しました。
アプリ固有のファイルスペースに保存することも考えましたが、アプリの削除時にプロジェクトフォルダを削除するべきではないため、使用できません。
1.メディアストアの使用
まずはMediaStoreを使ってみました。RELATIVE_PATHを使ってフォルダにファイルを入れることはできたのですが、ファイルの管理が非常に難しく、プロジェクトフォルダ内のファイルもメディア(写真、動画、音楽)とは関係のないファイルです。
2.DocumentFile の使用
別の方法を見つけました。Intent の ACTION_OPEN_DOCUMENT_TREE を使用して、ユーザーからプロジェクト フォルダーのアクセス権とツリー uri を取得し、それを使用して DocumentFile を作成することで、ファイルにアクセスできました。
最初はこれがとても良い方法だと思いましたが、すぐに遅いことがわかりました。
特に、findFile() メソッドの場合、1 つのファイルをスキャンするのに 1 秒近くかかります。私のプロジェクトフォルダには数十個のファイルがあり、これは商品化できませんでした。
より良い方法はありますか?DocumentContracts を試してみてくださいという投稿がいくつかありましたが、ファイルの一覧を取得したり、存在を確認したりする機能はないようです。
以下は私の現在のコードです: まず、ツリーの uri をリクエストします:
次に、ツリー uri を取得します。
特に、このように findFile を使用すると非常に遅くなります。
android - Android DocumentFile API の使用時にサブフォルダーの内容を一覧表示する方法
Android では File API の使用が許可されなくなったため、DocumentFile API に切り替えようとしています...
フォルダーを選択すると、返されたURIは
今、私は電話しています
フォルダの内容を取得します。内のすべてのサブフォルダーのリストを保持したい
最初に見つけたサブフォルダーの URI は次のとおりです。
後でそのフォルダ内のファイルを確認できるように保存する必要があります
問題は、私が電話をかけようとすると
このサブフォルダー uri では、このサブフォルダーの親フォルダーに一致する DocumentFile を返します
ここにサブフォルダー uri を保存して、後でこのサブフォルダー ファイルを一覧表示できるようにするにはどうすればよいですか?