Slide 1

Slide 1 text

DocumentsProviderアプリを 作ってみた CIFS Documents Providerについて

Slide 2

Slide 2 text

自己紹介 和田 篤 ● Androidエンジニア ● 2018年8月にゆめみに転職 (前職は業務システム開発) ● 趣味で個人開発アプリを作成 (Medolyなど) Shaniwar Wada (Pune, India) Medoly 最近作った個人開発アプリの話

Slide 3

Slide 3 text

アジェンダ ● Storage Access Framework (SAF) を知る ● CIFS Documents Provider について ● 実装のコアになるクラス ● さいごに

Slide 4

Slide 4 text

Storage Access Framework (SAF) を知る ワークフロー (画像出典: ストレージ アクセス フレームワークを使用してファイルを開く) DocumentsProvider Client 各アプリ(クライアント)は、 ● SAFを通じて、ドキュメントプロバ イダを持つストレージサービスに アクセスできる ● 各サービスのファイルを、同じ コードで扱える ● ドキュメントプロバイダからファイ ルへのアクセス権限を貰う ● ピッカーを通じて、アクセスする ファイル・ディレクトリをユーザが 選択 統一されたインターフェースで ストレージにアクセスする仕組み

Slide 5

Slide 5 text

今回作ったアプリ Storage Access Framework (SAF) を知る Google Drive Dropbox ExternalStorageProvider DownloadStorageProvider MediaDocumentsProvider DocumentsProviderの役割 ● アクセス可能なファイルのリスト ● クライアントへの権限付与 ● コピー、削除などのファイル操作 ● ファイルへの参照 ● ファイル読み書きのIO制御 など Android標準 アプリ クライアントのファイル操作を実行

Slide 6

Slide 6 text

CIFS Documents Provider について 特徴・機能 ● 共有フォルダへの接続情報を管理 ● サーバ検索などの、入力補助機能を備える ● ファイル管理機能は持たない ● 共有フォルダのアクセスには jCIFS-ngライブラリを利用 用途 ● 共有フォルダの音楽再生、画像閲覧 ● 保存データのエクスポート Windows共有フォルダのDocumentsProvider

Slide 7

Slide 7 text

実装のコアになるクラス DocumentsProvider (抽象クラス) ● 登録した認証情報でログイン ● 共有フォルダのURIと、DocumentsProviderのURIをマッピング ● コピー・削除などのファイル操作を処理 ProxyFileDescriptorCallback (抽象クラス、Android 8以降) ● ファイルオープン後に使用される ● ファイルに対するバイトストリーム操作(Read/Write)を処理

Slide 8

Slide 8 text

さいごに ● SAFを利用する事で、リモートストレージをローカルストレージと同様に操作 できる ● 今回、Windows共有フォルダアクセス用のDocumentsProviderアプリを作 成した ● アプリはGoogle Playのほか、Amazon Appstore、F-Droidで配信中 ○ 現状のインストール数は100強ぐらい ● GitHubでソースコード公開中 ○ MITライセンス

Slide 9

Slide 9 text

ご清聴ありがとうございました