前回、【Cordova】Android 11においてcordova-plugin-fileプラグインでDownloadフォルダにアクセスできないという記事を書きました。
アプリから[Download]フォルダにファイルを書き込むことは問題ありません。
アプリから[Download]フォルダに書き込んだファイルを読むことも問題ありません。
では何が問題なのかと言いますと、自身のアプリ以外で作成または上書きしたファイルにアクセスできないことが問題となっています。
cordova-plugin-fileプラグインがVer.7.0.0にアップデートされたので期待しましたが、今回の問題を解決する内容ではありませんでした。
いろいろと調べた結果、Android 11以降においては、MANAGE_EXTERNAL_STORAGE権限「すべてのファイルを管理できるアクセス権を付与」が必要であることがわかりました。
つまり、Javaでアクセス権を付与するコードを書き、それを実行するためのプラグインを別途作成しないと実現できません。
海外のstack overflowの「How do you request MANAGE_EXTERNAL_STORAGE permission in Android?」を参考にAndroid用プラグインを作成しました。
その結果、以下のような画面が表示されました。
この画面で、すべてのファイルを管理できるアクセス権を付与をONにすることで、自身のアプリ以外で作成または上書きしたファイルにアクセスすることができるようになります。
ただし、MANAGE_EXTERNAL_STORAGE権限を使用する場合、Google Playの審査が必要となります。
cordova-plugin-access-permissionというプラグイン名で作成しましたが、アクセス権を付与したかどうかコールバックする方法がわからないので、先に進まない状態です。