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;