红鱼儿

android app无法拍照

现象,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权限。

 

posted on 2020-06-10 15:42  红鱼儿  阅读(921)  评论(0编辑  收藏  举报