现象,app能打开像机,拍照,确认后,没有执行回调,直接返回了主窗口。
原因:进入手机设置->应用权限:获取手机信息,将这个打开,正常了!
手机:小米note 3 android 9
解决办法:用代码动态申请READ_PHONE_STATE权限:
procedure TMainForm.RequestPermission; begin {$IF DEFINED(ANDROID)} PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.CAMERA), JStringToString(TJManifest_permission.JavaClass.ACCESS_COARSE_LOCATION), JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION), JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE), JStringToString(TJManifest_permission.JavaClass.BLUETOOTH), JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADMIN), JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE) //这个权限影响拍照功能 ], procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>) begin if (Length(AGrantResults) = 0) then begin end; end); {$ENDIF} end;
为什么这个权限影响了拍照功能呢?想不明白。
与同事们讨论这个问题,得出一个结论:小米手机在拍照时,在照片上写水印,而读取这个水印信息,需要READ_PHONE_STATE权限。