Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DocumentsProviderアプリを作ってみた

7316ffb815ddf885ae884ab388929788?s=47 wa2c
September 10, 2021

 DocumentsProviderアプリを作ってみた

7316ffb815ddf885ae884ab388929788?s=128

wa2c

September 10, 2021
Tweet

Transcript

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

  2. 自己紹介 和田 篤 • Androidエンジニア • 2018年8月にゆめみに転職 (前職は業務システム開発) • 趣味で個人開発アプリを作成

    (Medolyなど) Shaniwar Wada (Pune, India) Medoly 最近作った個人開発アプリの話
  3. アジェンダ • Storage Access Framework (SAF) を知る • CIFS Documents

    Provider について • 実装のコアになるクラス • さいごに
  4. Storage Access Framework (SAF) を知る ワークフロー (画像出典: ストレージ アクセス フレームワークを使用してファイルを開く)

    DocumentsProvider Client 各アプリ(クライアント)は、 • SAFを通じて、ドキュメントプロバ イダを持つストレージサービスに アクセスできる • 各サービスのファイルを、同じ コードで扱える • ドキュメントプロバイダからファイ ルへのアクセス権限を貰う • ピッカーを通じて、アクセスする ファイル・ディレクトリをユーザが 選択 統一されたインターフェースで ストレージにアクセスする仕組み
  5. 今回作ったアプリ Storage Access Framework (SAF) を知る Google Drive Dropbox ExternalStorageProvider

    DownloadStorageProvider MediaDocumentsProvider DocumentsProviderの役割 • アクセス可能なファイルのリスト • クライアントへの権限付与 • コピー、削除などのファイル操作 • ファイルへの参照 • ファイル読み書きのIO制御 など Android標準 アプリ クライアントのファイル操作を実行
  6. CIFS Documents Provider について 特徴・機能 • 共有フォルダへの接続情報を管理 • サーバ検索などの、入力補助機能を備える •

    ファイル管理機能は持たない • 共有フォルダのアクセスには jCIFS-ngライブラリを利用 用途 • 共有フォルダの音楽再生、画像閲覧 • 保存データのエクスポート Windows共有フォルダのDocumentsProvider
  7. 実装のコアになるクラス DocumentsProvider (抽象クラス) • 登録した認証情報でログイン • 共有フォルダのURIと、DocumentsProviderのURIをマッピング • コピー・削除などのファイル操作を処理 ProxyFileDescriptorCallback

    (抽象クラス、Android 8以降) • ファイルオープン後に使用される • ファイルに対するバイトストリーム操作(Read/Write)を処理
  8. さいごに • SAFを利用する事で、リモートストレージをローカルストレージと同様に操作 できる • 今回、Windows共有フォルダアクセス用のDocumentsProviderアプリを作 成した • アプリはGoogle Playのほか、Amazon

    Appstore、F-Droidで配信中 ◦ 現状のインストール数は100強ぐらい • GitHubでソースコード公開中 ◦ MITライセンス
  9. ご清聴ありがとうございました