StorageActionFramework ACTION_OPEN_DOCUMENT インテントを使用して特定のファイルの情報を要求する方法はありますか? 具体的には、MediaStore から取得した特定のファイルの URI を持っています。書き込みアクセス権があるかどうかを確認し、ある場合は削除したいと思います。さらに、UI なしでこれを行いたいと思います (この特定のコンテキストでは何も必要ありません)。
intent.addCategory (Intent.CATEGORY_OPENABLE)ドキュメントには、たとえば、を使用してファイルのクラスに対してそれを行う方法が記載されています。また、特定の種類のファイルに制限するにはintent.setType ("image/*")、たとえば . しかし、特定のファイルに制限するものは何もありません。
また、StorageActionFramework から一連のファイルを受け取ると、個々のファイルのプロパティを表示できることにも気付きました。
ACTION_OPEN_DOCUMENT を使用して SAF の URI を取得できれば、それを使用DocumentsContract.deleteDocument()して削除できるようです。
より多くのコンテキスト
私の状況では、ユーザーはアプリ内からカメラ アプリを呼び出して、1 枚以上の写真を撮りました。次に、私のコードは MediaStore にクエリを実行して、新しい画像のファイル名を決定します。次に、ファイルをアプリ固有のディレクトリに移動したいと考えています。これは、「内部」ストレージと「外部」ストレージにあるファイルでは問題なく機能しますが、リムーバブル ストレージでは機能しません。
長期的には、このソリューションは明らかに多くの永続的なストレージを使用するため、不適切です (ただし、ストレージ サイズが急速に増加しているため、これは緩和されます)。ただし、私のアプリは、アプリ経由で取得した画像ファイルを制御する必要があるため、それらをリムーバブル ストレージに残すと、アプリが破損する可能性があります。
もう 1 つの複雑な要因は、複数の写真を撮影して所定の場所に保存するための Android API がないことです。1 枚の写真を撮るための API がありますが、それは私のアプリケーションでは機能しません。したがって、私は、カメラ アプリがファイルを必要な場所に保存し、後でそれらを移動できるようにするしかありません。
他の一部のアプリは、単に写真のコピーを作成し、そのコピーをプライベート ディレクトリに保存します。私はそれを行うことができますが、それはストレージの問題をさらに悪化させます. 長期的な解決策は、おそらくローカル プライベート キャッシュと組み合わせてクラウド ストレージを使用することです。