バックグラウンド
Kitkat (API 19) 以降、Google は SD カード (より正確には、2 番目の外部ストレージ) にアクセスするためのいくつかの制限と API を追加しました。
サードパーティのアプリは、root 権限を持っているか、システム アプリでない限り、自分のフォルダー以外の SD カードに書き込むことができなくなりました。
Google は、「ファイル ピッカー」と呼ばれる SD カード上のファイルを管理できる組み込みのシステム アプリを追加しました。これには、ユーザーが実行できるいくつかの操作があります。
新しい API は「Storage Access Framework」と呼ばれます。詳細については、こちらを参照してください。
問題
以前は常に可能だった特定の操作を処理する方法に関する情報はあまりありません。確かに、それらはすべての外部ストレージ操作に使用されていましたが、Google がこのタイプのストレージを扱ったのはごく最近のことです。
また、新しい「ファイル ピッカー」で実行できることと実行できないことについて、十分な情報が見つかりませんでした。
フレームワークは他のアプリに属するファイルの操作をサポートしているようですが、一部のファイルはユーザーによって (たとえば PC から) コピーされたものであり、それらがどのように処理されるかはわかりません。
質問
新しい API で次の操作を処理するにはどうすればよいですか?
新しいツールを開いて、ユーザーがファイルを手動で操作できる特定のパスを表示する意図はありますか?
Kitkat から始めて、ツールは常に存在すると仮定できますか? そうでない場合はどうすればよいですか?代替手段はありますか?
SDカードへの書き込みのこの制限を「修正」したユーザーのために(たとえば、このツールを使用して)、フルアクセスが許可されているかどうかを識別する公式の方法はありますか? もちろん、どこかにランダムなファイルを作成して削除しようとするだけではありません...
新しい API で使用できるインテントは何ですか? 私が見つけたすべてのインテントは、他のアプリがサポートしている場合に備えて、他のアプリのファイルの処理に関連していますが、ファイルへのパスを処理するものは見つかりません。