红鱼儿

分享一个请求android权限的代码
procedure RequestStorePermission;
const
  READ_EXTERNAL_STORAGE = 'android.permission.READ_EXTERNAL_STORAGE';
  WRITE_EXTERNAL_STORAGE = 'android.permission.WRITE_EXTERNAL_STORAGE';
  READ_MEDIA_IMAGES = 'android.permission.READ_MEDIA_IMAGES';
  MANAGE_EXTERNAL_STORAGE = 'android.permission.MANAGE_EXTERNAL_STORAGE';
var
  SDKVersion: Integer;
  PermissionsToRequest: TArray<string>;
  str:string;
begin
  SDKVersion := TJBuild_VERSION.JavaClass.SDK_INT;

  // Android版本区分逻辑
  if SDKVersion >= 33 then // Android 13+
    PermissionsToRequest := [READ_MEDIA_IMAGES]
  else if SDKVersion >= 29 then // Android 10-12
    PermissionsToRequest := [READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE]
  else // Android 9.0及以下
    PermissionsToRequest := [MANAGE_EXTERNAL_STORAGE];

  PermissionsService.DefaultService.RequestPermissions(
    PermissionsToRequest,
    procedure(const APermissions: TClassicStringDynArray;
      const AGrantResults: TClassicPermissionStatusDynArray)
    var
      I: Integer;
      AllGranted: Boolean;
    begin
      AllGranted := True;
      for I := 0 to High(AGrantResults) do
        if AGrantResults[I] <> TPermissionStatus.Granted then
        begin
          AllGranted := False;
          Break;
        end;

      TThread.Synchronize(nil,
        procedure
        begin
          if AllGranted then
          begin
          str:='存储权限已授予';
          end else begin
          str:='存储权限被拒绝';
          end;
        end);
    end);
end;

 

posted on 2025-08-20 15:37  红鱼儿  阅读(53)  评论(0)    收藏  举报