Advertisement
dondonondon

BFA.Permission

May 11th, 2023
1,338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.34 KB | Source Code | 0 0
  1. unit BFA.Permission;   //belum kepake, males pindah nya dari BFA.Helper.Main
  2.  
  3. interface
  4.  
  5. uses
  6.   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7.   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  8.   FMX.Objects, System.Permissions, FMX.DialogService
  9.   {$IF DEFINED (ANDROID)}
  10.   , Androidapi.Helpers, Androidapi.Jni.Os
  11.   {$ENDIF}
  12.   ;
  13.  
  14. type
  15.  
  16.   getPermission = class
  17.     const
  18.       READ_CALENDAR               = 'android.permission.READ_CALENDAR';
  19.       WRITE_CALENDAR              = 'android.permission.WRITE_CALENDAR';
  20.       CAMERA                      = 'android.permission.CAMERA';
  21.       READ_CONTACTS               = 'android.permission.READ_CONTACTS';
  22.       WRITE_CONTACTS              = 'android.permission.WRITE_CONTACTS';
  23.       GET_ACCOUNTS                = 'android.permission.GET_ACCOUNTS';
  24.       ACCESS_FINE_LOCATION        = 'android.permission.ACCESS_FINE_LOCATION';
  25.       ACCESS_COARSE_LOCATION      = 'android.permission.ACCESS_COARSE_LOCATION';
  26.       RECORD_AUDIO                = 'android.permission.RECORD_AUDIO';
  27.       READ_PHONE_STATE            = 'android.permission.READ_PHONE_STATE';
  28.       READ_PHONE_NUMBERS          = 'android.permission.READ_PHONE_NUMBERS ';
  29.       CALL_PHONE                  = 'android.permission.CALL_PHONE';
  30.       ANSWER_PHONE_CALLS          = 'android.permission.ANSWER_PHONE_CALLS ';
  31.       READ_CALL_LOG               = 'android.permission.READ_CALL_LOG';
  32.       WRITE_CALL_LOG              = 'android.permission.WRITE_CALL_LOG';
  33.       ADD_VOICEMAIL               = 'android.permission.ADD_VOICEMAIL';
  34.       USE_SIP                     = 'android.permission.USE_SIP';
  35.       PROCESS_OUTGOING_CALLS      = 'android.permission.PROCESS_OUTGOING_CALLS';
  36.       BODY_SENSORS                = 'android.permission.BODY_SENSORS';
  37.       SEND_SMS                    = 'android.permission.SEND_SMS';
  38.       RECEIVE_SMS                 = 'android.permission.RECEIVE_SMS';
  39.       READ_SMS                    = 'android.permission.READ_SMS';
  40.       RECEIVE_WAP_PUSH            = 'android.permission.RECEIVE_WAP_PUSH';
  41.       RECEIVE_MMS                 = 'android.permission.RECEIVE_MMS';
  42.       READ_EXTERNAL_STORAGE       = 'android.permission.READ_EXTERNAL_STORAGE';
  43.       WRITE_EXTERNAL_STORAGE      = 'android.permission.WRITE_EXTERNAL_STORAGE';
  44.       ACCESS_MEDIA_LOCATION       = 'android.permission.ACCESS_MEDIA_LOCATION';
  45.       ACCEPT_HANDOVER             = 'android.permission.ACCEPT_HANDOVER';
  46.       ACCESS_BACKGROUND_LOCATION  = 'android.permission.ACCESS_BACKGROUND_LOCATION';
  47.       ACTIVITY_RECOGNITION        = 'android.permission.ACTIVITY_RECOGNITION';
  48.   end;
  49.  
  50.   HelperPermission = class
  51.     class procedure setPermission(const APermissions: TArray<string>; FProc : TProc = nil);
  52.  
  53.     public
  54.       class var AProc : TProc;
  55.     private
  56.  
  57.     {$IF CompilerVersion <= 34.0}
  58.       class procedure DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
  59.       class procedure RequestPermissionsResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>);
  60.     {$ELSEIF CompilerVersion >= 35.0}
  61.       class procedure DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
  62.       class procedure RequestPermissionsResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
  63.     {$ENDIF}
  64.   end;
  65.  
  66.  
  67. implementation
  68.  
  69. { HelperPermission }
  70. {$IF CompilerVersion <= 34.0}
  71. class procedure HelperPermission.DisplayRationale(Sender: TObject;
  72.   const APermissions: TArray<string>; const APostRationaleProc: TProc);
  73. {$ELSEIF CompilerVersion >= 35.0}
  74. class procedure HelperPermission.DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
  75. {$ENDIF}
  76. var
  77.   i : Integer;
  78.   RationaleMsg: String;
  79. begin
  80.   RationaleMsg := '';
  81.   for i := 0 to High(APermissions) do begin
  82.     RationaleMsg := RationaleMsg + 'Application asking permission ' + APermissions[i] + ''#13;
  83.   end;
  84.  
  85.   TDialogService.ShowMessage(RationaleMsg,
  86.   procedure(const AResult: TModalResult) begin
  87.     APostRationaleProc;
  88.   end)
  89. end;
  90.  
  91. {$IF CompilerVersion <= 34.0}
  92. class procedure HelperPermission.RequestPermissionsResult(Sender: TObject;
  93.   const APermissions: TArray<string>;
  94.   const AGrantResults: TArray<TPermissionStatus>);
  95. {$ELSEIF CompilerVersion >= 35.0}
  96. class procedure HelperPermission.RequestPermissionsResult(Sender: TObject;
  97.   const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
  98. {$ENDIF}
  99. begin
  100.   var isAllGrant := True;
  101.   for var i := 0 to Length(AGrantResults) - 1 do begin
  102.     if AGrantResults[i] <> TPermissionStatus.Granted then begin
  103.       isAllGrant := False;
  104.       Break;
  105.     end;
  106.   end;
  107.  
  108.   if isAllGrant then begin
  109.     if Assigned(AProc) then
  110.       AProc;
  111.   end else begin
  112.     TDialogService.ShowMessage('Gagal mendapatkan akses storage');
  113.   end;
  114. end;
  115.  
  116. class procedure HelperPermission.setPermission(
  117.   const APermissions: TArray<string>; FProc: TProc);
  118. begin
  119.   if Assigned(FProc) then
  120.     AProc := FProc;
  121.  
  122.   PermissionsService.RequestPermissions(
  123.     APermissions,
  124.     HelperPermission.RequestPermissionsResult,
  125.     HelperPermission.DisplayRationale);
  126. end;
  127.  
  128. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement