hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

【重要】EBPocket for Android の対象範囲別ストレージ対応について

やむを得ず、EBPocket for Android の対象範囲別ストレージ対応をすることになってしまった。その理由は、

  1. Android 11 以降で外字ビットマップが表示されないという現象が起きるようになった。改修は容易だが、アップデートするためにはtargetSdkVersion を31以上にしないと、Google Playに申請ができない。
  2. 近い将来、targetSdkVersion を31以上にしないと、新規ユーザのGoogle Playにアプリが表示されなくなる(Android11以降の場合)。EBPocketというアプリが、Google Play上から存在しなくなってしまう。

targetSdkVersion を31以上にするということは、対象範囲別ストレージ対応が必須になるということである。要するに、iPhoneみたいに、アプリ固有のサンドボックスと呼ばれる領域以外にアクセスできなくなる。
EBPocketにおいては、これまでのように外部SD上の辞書に自由にアクセスできなくなるということだ。

そこで、EBPocket 1.49以降では次のようになる。

Android10まで

従来通り、ストレージ内の任意の場所を辞書検索パスに指定できる。外部SDカード上の辞書もこれまで通り使用できる。

Android11以降

  1. 辞書の場所は、次のアプリ固有のデータ領域(サンドボックス)に固定される。辞書を追加する場合は、必ずこの配下に辞書を置かないと認識しない
    /storage/emulated/0/Android/data/info.ebstudio.ebpocket/files/EPWING
  2. PCからUSB接続で辞書を転送する場合は、上記の場所に辞書を転送し、「辞書の再検索」を実行する。
  3. 外部SDに辞書が存在する場合は、辞書管理メニューから辞書をインポートする。以下のスクリーンショットを参考にしてほしい。

スライドメニューから辞書管理を選択

辞書管理画面にて、辞書追加ボタンを押す。

辞書をインポートするフォルダを選択する。

アクセスの許可を与える。

辞書が追加される。

かなりの混乱が予想されるが、避けては通れないのでしかたない。今後もEBPocket for Androidの提供を続けるには、Google Playの規約に準拠するしかないからだ。

追記:MANAGE_EXTERNAL_STORAGE 権限について(2024/03/24)

実は、MANAGE_EXTERNAL_STORAGE 権限をつけると、Android10以前のように「すべてのファイルへのアクセス」が可能になるが、Google Playで権限申請フォームから申請して審査が必要である。この記事を書いた後、MANAGE_EXTERNAL_STORAGE 権限をつけて申請してみたが、案の定、審査が通らなかった。

この権限はファイルマネージャ等を想定しているようだが、世の中には音楽プレーヤーやPDFリーダーなどでMANAGE_EXTERNAL_STORAGE を使っているらしきアプリがいくらもある。「MANAGE_EXTERNAL_STORAGE以外の方法では実装できない」理由を技術的に理を尽くして申請フォームで説明してみたが、Googleの石頭には通じなかった。

ところで、MANAGE_EXTERNAL_STORAGE 権限をつけてビルドした「すべてのファイルへのアクセス」が可能な、私家版の EBPocket for Android が手元にあるのだが、さて、これをどうやって配布したものか。