c++builder fmx手机读写系统储存权限
时间: 2024-05-12 19:16:45 浏览: 10
关于C++ Builder FMX手机读写系统储存权限,您可以使用TFileAccessHelper单元来获取文件访问权限,具体操作如下:
1. 在FMX项目中添加TFileAccessHelper单元
2. 在需要获取文件访问权限的位置调用如下代码:
```
uses
System.IOUtils, FMX.Helpers.Android, FMX.Platform.Android, Androidapi.JNI.JavaTypes, Androidapi.Helpers;
function CheckStoragePermissions: Boolean;
var
Permissions: TArray<string>;
begin
Permissions := [JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)];
Permissions := Permissions + [JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)];
if PermissionsService.RequestPermissions(Permissions,
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
var
I: Integer;
CanRead, CanWrite: Boolean;
begin
CanRead := False;
CanWrite := False;
for I := 0 to Length(APermissions) - 1 do
begin
if APermissions[I] = JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE) then
begin
CanRead := AGrantResults[I] = TPermissionStatus.Granted;
end
else if APermissions[I] = JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE) then
begin
CanWrite := AGrantResults[I] = TPermissionStatus.Granted;
end
end;
Result := CanRead and CanWrite; // 返回读写权限是否都已获取到
end) then
begin
Result := True; // 已经获取到读写权限
end
else
begin
Result := False; // 读写权限没有获取到
end;
end;
```
以上代码会通过调用PermissionsService对象的RequestPermissions方法获取读写储存权限,如果返回True,说明已经获取到了读写权限,否则返回False,表示没有获取到读写权限。
注意:在AndroidManifest.xml文件中需要添加以下声明:
```
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
```