マル開発日記

マルAndroidデベロッパ

FileProviderでファイルパス(data)を公開する

 AndroidではURIスキームがcontentの場合、dataというカラムにファイルパスを置いておくのが通例のようです。しかしFileProviderはデフォルトでdataカラムを返してくれません。
 FileProviderを継承してdataを返してくれるようなカスタムクラスを作成すれば、fileスキームを使わなくともうまくファイルパスを拾って共有できるアプリもあるかもしれません。その方法は。。

1.getFileForUriをオーバライドし、UriとFile CanonicalPathのマップを作る。
2.queryでさらにdataのカラムをaddする。dataは1で作ったマップから得れば良い。

 getUriForFileがクラスメソッドだけど、クラスメソッドってオーバライドできたっけ??でも、まあどちらにせよこのメソッド使うのは自作アプリ内だからカスタムクラスのやつ呼べばいいよね?後はカスタムプロバイダでも相手アプリがURIからFileDescripterをうまくとってこれるかどうか?もしこれができないと推奨の方法でファイル共有ができなくなってしまう。あと、仮にこれでうまくいったとしても将来どうなるかわからん。。

 まだ試してないけど~、とりあえず一度は試してみようと思うけど。。他にやりたいことあるし(/--)/そこまでする義理もないきがする(笑)

 おっと、ファイルパスの情報はプリファレンスかなんかにぶちこんどかないとダメそうだね。別プロセスからqueryされる訳だし。。やっぱメンドイなー