flutter库中,一个很好用的图片拍照和选择库是官方维护的image_picker库。
现象
image_picker库在安卓上已知的bug:如果使用在层级比较深的应用中时,拍照或者选择图片,都会在没有权限的情况下,申请了权限进入相关页面两次。比如拍照就进入系统拍照应用两次,选择图片就进入了gallary应用两次,这样就会导致拍照或者选择了图片不能正确返回应用。
原因:
在拍照的时候需要camera权限,选择图片时需要storage权限,这时候去请求权限,使用ActivityCompat.requestPermissions时,当用户拒绝或者同意权限时,onRequestPermissions方法会调用两次,不知道这个问题和官方已知的随机导致MainActivity崩溃的原因是不是一样呢?
暂时解决方式:
目前的解决方式是:在请求拍照前,app主动先去申请camera权限;请求选择图片时,主动申请storage权限,这样就不需要经过image_picker的请求权限过程了,也就不会调用两次onRequestPermisson了。