問題タブ [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 - ストレージ アクセス フレームワーク 正しい Uri パスの取得 ファイルの削除/編集/取得
TL:DR; DocumentFile を使用してフォルダーとサブフォルダーを作成する方法と、このクラスを使用して作成したファイルを削除する方法を説明しました。onActivityResult() と documentFile.getUri.toString() から返される URI は同じではありません。私の質問は、SAF UI を使用せずに有効な Uri を取得して、可能であればハックを使用せずにフォルダーとファイルを操作する方法です。
これまでに学んだことを共有し、質問をさせてください。フォルダーの URI を取得して操作する場合は、 with を使用Intent
しACTION_OPEN_DOCUMENT_TREE
てフォルダーにアクセスするための URI を取得し、その uri に W/R パーミッションを設定する必要があります。
onActivityResult に付与された永続的なアクセス許可:
デバイスのメイン フォルダを選択した場合:
戻り値: content://com.android.externalstorage.documents/tree/primary:
戻り値: storage/emulated/0
戻り値: content:/com.android.externalstorage.documents/tree/primary:
メインフォルダーのパスを取得するために DocumentFile クラスを使用すると、取得する
戻り値: file:///storage/emulated/0
私の最初の質問は、DocumentFile クラスを使用してコンテンツを含む Uri を取得する方法です。
私は写真アプリを構築しています。デフォルトとして、DocumentFile クラスを使用して画像の初期フォルダーを設定したいと考えています。
このメソッドは、デバイスのメイン メモリ内に DIR_MAIN/DIR_SUB を作成するか、選択に応じて PICTURES または DCIM フォルダーを作成します。このデフォルトのフォルダーを使用して、この作成されたサブフォルダーに画像を保存します。newSubDir.getUri().toString(): file:///storage/emulated/0/MainFolder/SubFolderを取得します DIR_MAIN MainFolder、DIR_SUB: SubFolder という名前を付けてテストしました。
画像にアクセスまたは削除するには、このパスと作成した画像名を使用します
Uri の形式が正しくないため、imageDelete は null を返します。
SAF ui を開いて UI onActivityResult を取得し、それを文字列として保存する場合、このメソッドを使用してディレクトリを取得し、Uri のアクセス許可を確認します。
文字列の Uri に書き込み権限があるかどうかを確認します。永続的な権限を取得または削除しないと、書き込み権限がない可能性があります。
有効なURIで画像を保存して使用した後
storage-access-framework - DocumentFile.getParentFile() が Uri で作成された後に null を返すのはなぜですか?
コード:
この点で、DocumentFile の Uri から作成された DocumentFile がオリジナルと異なるのはなぜですか?