procedure TfrmMain.frmMainJNIPrompt(Sender: TObject);
var
manifestPermissions: TDynArrayOfString;
begin
if IsRuntimePermissionNeed() then // that is, if target API >= 23
begin
ShowMessage('RequestRuntimePermission....');
////https://developer.android.com/guide/topics/security/permissions#normal-dangerous
SetLength(manifestPermissions, 1);
manifestPermissions[1]:= 'android.permission.READ_PHONE_STATE'; //from AndroodManifest.xml
Self.RequestRuntimePermission(manifestPermissions, 1212); //handled by OnRequestPermissionResult
SetLength(manifestPermissions, 1);
end;
end;
procedure TfrmMain.frmMainRequestPermissionResult(Sender: TObject;
requestCode: integer; manifestPermission: string;
grantResult: TManifestPermissionResult);
begin
case requestCode of
1212:begin
if grantResult = PERMISSION_GRANTED then
begin
//ShowMessage('Success! ['+manifestPermission+'] Permission granted!!! ' );
if manifestPermission = 'android.permission.READ_PHONE_STATE' then
showmessage('read_call_state_ok');
end
else//PERMISSION_DENIED
begin
ShowMessage('Sorry... ['+manifestPermission+'] permission not granted... ' );
end;
end;
end;
end;
procedure TfrmMain.jTelephonyManager1CallStateChanged(Sender: TObject;
state: TTelephonyCallState; phoneNumber: string);
begin
if state=csIdle then
showmessage('csIdle');
if state=csRinging then
showmessage('pause');
if state=csOffHook then
showmessage('start')
end;