Android8でcordova-camera-pluginを使うと"Error capturing image"とエラーメッセージが返ってくる
TL; DR
cordova-camera-pluginのバージョンを4.0.2以上にあげる
概要
saveToPhotoAlbum
をtrueにして、getPicture()関数を呼んだ際にErrorCallbackがよばれて、Error capturing image
というメッセージが返ってくる。
原因
Android8からパーミッション(permission)の扱いが変わったため。
saveToPhotoAlbum
をtrueにしていると、端末に写真を保存するので書き込み権限(WRITE_EXTERNAL_STORAGE
)が必要です。
バージョン4.0.2以前はその際に読み込み権限(READ_EXTERNAL_STORAGE
)のみを指定していました。
Android8未満ではそれでも問題なく動作したのですが、Android8移行では書き込み権限も要求するようになったため写真の保存ができずエラーになっていました。
詳しくはチケットが起票されているのでそちらをご参照ください。
https://issues.apache.org/jira/browse/CB-13781
解決策
- バージョン4.0.2以上にあげる
1番シンプルな解決策。 - オプションのsaveToPhotoAlbumをfalseにする
何らかの事情でプラグインのバージョンを上げれない場合の回避策(workaround)になります。
saveToPhotoAlbum
がfalseだと端末に写真を保存しないので権限が必要ないです。
詳しくは以下を見てください。
https://stackoverflow.com/questions/29392639/error-capturing-image-with-phonegap-on-android
雑談
Monacaを使用していてmonacaのバージョンを6.5→7.1に上げた際にcorodova-camera-pluginのバージョンも更新される。
ただ、そのバージョンが4.0.1でちょうど本事象が解決される前のバージョン。
ほんと困るなあ。
今回の件は、Androidの不具合修正によって引き起こされた不具合。
Author And Source
この問題について(Android8でcordova-camera-pluginを使うと"Error capturing image"とエラーメッセージが返ってくる), 我々は、より多くの情報をここで見つけました https://qiita.com/hayashi-ay/items/af392a2c83d19226cd02著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .