现象,app能打开像机,拍照,确认后,没有执行回调,直接返回了主窗口。
原因:进入手机设置->应用权限:获取手机信息,将这个打开,正常了!
手机:小米note 3 android 9
解决办法:用代码动态申请READ_PHONE_STATE权限:
uses System.Permissions;
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权限。
-----------------------------------
https://blog.51cto.com/kinglandsoft/3224653
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.082418918609619 seconds