現象,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權限。