Skip to content

amekusa03/android-pdf-unlocker

Repository files navigation

PDF Unlocker

パスワード保護されたPDF(給与明細など)を、あらかじめ設定したパスワードで自動的に解除し、お好みのPDFビューアーアプリへシームレスに受け渡すAndroid用ラッパーアプリです。

概要

毎月送られてくる給与明細など、決まったパスワードを入力する手間を省き、ワンタップで内容を確認できるようにすることを目的としています。

主な機能

  • 自動パスワード解除: 設定済みのパスワードを使用して、Gmail等の添付PDFを自動でアンロックします。
  • アプリ間連携: 解除したPDFを、システムにインストールされている他のPDF閲覧アプリ(Google PDF Viewer等)に ACTION_VIEW インテントで転送します。
  • パスワード未設定ファイルへの対応: パスワードがかかっていないファイルは、そのまま次のアプリへ渡します。
  • 安全なストレージ: ユーザーのパスワードは EncryptedSharedPreferences を使用して安全に保存されます。

システム構成

  • 対象OS: Android 6.0 (API 23) 以上
  • 主要ライブラリ:
    • PdfBox-Android: PDFの解析およびパスワード解除に使用。
    • Security (Jetpack): EncryptedSharedPreferences による認証情報の保護。

動作フロー

  1. パスワード設定: 初回起動時または設定画面で、PDF解除用の共通パスワード(生年月日など)を保存。
  2. PDFの受け取り: GmailなどのアプリでPDF添付ファイルをタップした際、本アプリを選択。
  3. 解除処理:
    • パスワード保護の有無を判定。
    • 保護されている場合、保存済みパスワードで一時ファイル(キャッシュ)として展開。
  4. 外部アプリ起動: FileProvider を介して一時ファイルのURIを生成し、インテントを発行して他アプリで表示。

技術的留意事項

  • FileProvider: Android 7.0以降のセキュリティ制約に対応するため、アプリ間のファイル共有には FileProvider を使用しています。
  • 一時ファイルの管理: 解除された(パスワードのない)生データは context.cacheDir に保存されます。セキュリティ向上のため、閲覧終了後や次回起動時に古い一時ファイルを削除する仕組みを推奨しています。
  • 権限: content:// URI を通じてファイルを受け取るため、通常は広範なストレージ読み取り権限は不要です。

開発環境のトラブルシューティング


ライセンス

このプロジェクトは MIT License の下で公開されています。 (※実際の運用に合わせて変更してください)

About

パスワード保護されたPDFを、あらかじめ設定したパスワードで自動的に解除し、お好みのPDFビューアーアプリへシームレスに受け渡すAndroid用ラッパーアプリです。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages