this is my source code,but permission is alway denied.
procedure TAndroidModule1.AndroidModule1JNIPrompt(Sender: TObject);
var
manifestPermissions: TDynArrayOfString;
begin
//https://www.captechconsulting.com/blogs/runtime-permissions-best-practices-and-how-to-gracefully-handle-permission-removal
//https://developer.android.com/guide/topics/security/permissions#normal-dangerous
if IsRuntimePermissionNeed() then // that is, target API >= 23
begin
if IsRuntimePermissionGranted('android.permission.CAMERA') and
IsRuntimePermissionGranted('android.permission.WRITE_EXTERNAL_STORAGE') then
begin
ShowMessage('Good ... we have runtime permissions !');
end
else
begin
ShowMessage('warning: Requesting Runtime Permission.... please, wait..');
SetLength(manifestPermissions, 2);
manifestPermissions[0]:= 'android.permission.CAMERA'; //from AndroodManifest.xml
manifestPermissions[1]:= 'android.permission.WRITE_EXTERNAL_STORAGE'; //from AndroodManifest.xml
Self.RequestRuntimePermission(manifestPermissions, 1101);
SetLength(manifestPermissions, 0);
end;
end;
end;
procedure TAndroidModule1.AndroidModule1RequestPermissionResult(
Sender: TObject; requestCode: integer; manifestPermission: string;
grantResult: TManifestPermissionResult);
begin
case requestCode of
1101:begin
if manifestPermission = 'android.permission.CAMERA' then
begin
{
if grantResult = PERMISSION_GRANTED then
ShowMessage('Success! ['+manifestPermission+'] Permission grant!!! ' )
else //PERMISSION_DENIED
ShowMessage('Sorry... ['+manifestPermission+'] DENIED... ' );
}
end;
if manifestPermission = 'android.permission.WRITE_EXTERNAL_STORAGE' then
begin
if grantResult = PERMISSION_GRANTED then
ShowMessage('Success! ['+manifestPermission+'] Permission grant!!! ' )
else //PERMISSION_DENIED
ShowMessage('Sorry... ['+manifestPermission+'] Permission not grant... ' );
end;
end;
end;
end;