Browse Source

add PermissionsCheck

KngStr 5 years ago
parent
commit
6787b1003d
2 changed files with 42 additions and 2 deletions
  1. 4 2
      Demos/Android Helper/Unit1.fmx
  2. 38 0
      Demos/Android Helper/Unit1.pas

+ 4 - 2
Demos/Android Helper/Unit1.fmx

@@ -9,6 +9,7 @@ object Form1: TForm1
   FormFactor.Devices = [Desktop]
   OnCreate = FormCreate
   OnDestroy = FormDestroy
+  OnShow = FormShow
   DesignerMasterStyle = 0
   object mmo1: TMemo
     Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
@@ -27,11 +28,12 @@ object Form1: TForm1
       '  '#22914#65306#31995#32479#19979#36733#30446#24405#65292#23433#21331'10'#24320#22987#30340#25152#26377#25991#26723#31867#22411#30446#24405
       ''
       #20851#20110#22810#36873
-      '  ACTION_PICK '#19981#25903#25345#22810#36873
+      '  ACTION_PICK '#23433#21331'4.4'#19981#25903#25345#22810#36873#65292#20294#23433#21331'10'#21487#20197#65292#20854#20182#29256#26412#26242#26410#27979#35797
       '  '#26377#20123#25163#26426#22810#36873#38656#35201#20320#20808#38271#25353#20854#20013#19968#20010#25991#20214#25165#20250#20986#29616#22810#36873#26694
       ''
       #20851#20110#26435#38480
-      '  '#23433#21331'10'#30340#26102#20505#65292'ACTION_PICK'#27809#26377#36816#34892#26102#30340#23384#20648#26435#38480#20063#21487#20197#33719#21462#22320#22336#65292#20854#20182#20004#20010#19981#34892)
+      '  '#23433#21331'10'#30340#26102#20505#65292'ACTION_PICK '#27809#26377#36816#34892#26102#30340#23384#20648#26435#38480#20063#21487#20197#33719#21462#22320#22336#65292#20854#20182#20004#20010#19981#34892
+      '')
     TextSettings.WordWrap = True
     Anchors = [akLeft, akTop, akRight, akBottom]
     Position.Y = 186.000000000000000000

+ 38 - 0
Demos/Android Helper/Unit1.pas

@@ -4,6 +4,10 @@ interface
 
 uses
   System.Messaging,
+  {$IF DEFINED(ANDROID) AND (RTLVersion >= 33)}
+  Androidapi.JNI.Os,
+  System.Permissions,
+  {$ENDIF}
   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
   FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo;
@@ -22,8 +26,13 @@ type
     procedure btn4Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
+    procedure FormShow(Sender: TObject);
   private
     { Private declarations }
+    {$IF DEFINED(ANDROID) AND (RTLVersion >= 33)}
+    procedure PermissionsCheck;
+    procedure PermissionsResultHandler(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>);
+    {$ENDIF}
     procedure DoReceivedImagePath(const Sender: TObject; const M: TMessage);
     procedure DoCancelReceivingImage(const Sender: TObject; const M: TMessage);
   public
@@ -267,4 +276,33 @@ begin
   TMessageManager.DefaultManager.Unsubscribe(TMessageCancelReceivingImage, DoCancelReceivingImage);
 end;
 
+procedure TForm1.FormShow(Sender: TObject);
+begin
+  {$IF DEFINED(ANDROID) AND (RTLVersion >= 33)}
+  PermissionsCheck;
+  {$ENDIF}
+end;
+
+{$IF DEFINED(ANDROID) AND (RTLVersion >= 33)}
+procedure TForm1.PermissionsCheck;
+begin
+  if TJBuild_VERSION.JavaClass.SDK_INT >= 23 then
+    PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.CAMERA),
+       JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
+       JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)], PermissionsResultHandler);
+end;
+
+procedure TForm1.PermissionsResultHandler(const APermissions: TArray<string>;
+  const AGrantResults: TArray<TPermissionStatus>);
+begin
+  if PermissionsService.IsEveryPermissionGranted(
+    [JStringToString(TJManifest_permission.JavaClass.CAMERA),
+     JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
+     JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)]) then
+    mmo1.Lines.Add('Permission granted')
+  else
+    mmo1.Lines.Add('Permission not granted');
+end;
+{$ENDIF}
+
 end.