2021/06/02

[android] テキストファイルをGoogleドライブに置きたい (1)

そう、ただそれだけのことだ。Android といえば Googleだから、Googleドライブに置くだけだったら簡単に違いない。

それがどういう処理なのか考えていなかったのだが、ファイル共有に相当するようだった。

ファイル共有の設定  |  Android デベロッパー  |  Android Developers
https://developer.android.google.cn/training/secure-file-sharing/setup-sharing?hl=ja

ローカルファイルのパスを渡しておしまい、とはいかないようだ。


いや、その前にこれを見つけた。

他のアプリへの単純なデータの送信  |  Android デベロッパー  |  Android Developers
https://developer.android.google.cn/training/sharing/send?hl=ja

単純こそ求めるものなのだよ。

テキストコンテンツとバイナリコンテンツがある。
テキストファイルをファイルのままで渡したい場合にはどうなるのだろうか?
ここの例に出てくるのは「コンテンツ」としてのデータなのだと思うが、私はあくまでファイルとして渡したいのだ。

 

そうなんだよ。タイトルも「データの送信」って書いてあるじゃないか。
となると、やはりファイルの共有を読むことになるだろう。


いろいろ設定がいる。

  • AndroidManifest.xml に FileProvider を追加
  • res/xml にファイルパス設定をする XMLファイルを追加
    • このファイルは AndroidManifest.xml で指定することになる
  • 実装する

 

AndroidManifest.xml は、まあなんとなくいいとしよう。
設定は必要だ。

<paths> の設定をする XMLファイル。
これは、共有ファイルを格納するディレクトリを指定するもののようだ。最初からディレクトリを指定しておくというのはわかる。
よくわからないのが、パスセグメント、というやつだ。

<files-path path="images/" name="myimages" />

attributeの pathに指定するのがアプリのデータディレクトリ/files の下に配置するディレクトリ名で、この中に入っているファイルが共有されるのだろう。そして name がパスセグメントというものなのだろう。 コンテンツURIに追加すると言われても、このページの中ではそれ以上の説明がないのだ。

content://com.example.myapp.fileprovider/myimages/default_image.jpg

この例からすると、 path の方が物理デバイスのディレクトリ名で、 name の方が URIのコンテンツ名のディレクトリ名ということなのかね。


ともかく、これで準備だけはできたようだ。
あとはファイルを置いて共有するだけなのだが・・・

ファイルの共有  |  Android デベロッパー  |  Android Developers
https://developer.android.google.cn/training/secure-file-sharing/share-file?hl=ja

ファイルの共有って、共有アイコンをタップしたときに下からするっと選択画面が出てくるあれではないのだろうか?
さっきの「データの送信」の方はそういう画面例が出ていたのだが、ああいうのがほしいのだ。

共有ファイルのリクエスト  |  Android デベロッパー  |  Android Developers
https://developer.android.google.cn/training/secure-file-sharing/request-file?hl=ja

よし、続きは後日だ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。