c++builder fmx 安卓手机获取读写系统储存权限代码
时间: 2024-04-29 09:26:07 浏览: 131
文件的随机读写 C++ Builder示例
以下是获取安卓手机读写系统储存权限的代码:
```
uses
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.Net,
Androidapi.Helpers,
FMX.Dialogs,
System.SysUtils;
function HasStoragePermission: Boolean; // 检查是否已经获取储存权限
begin
Result :=
(TJBuild_VERSION.JavaClass.SDK_INT < TJBuild_VERSION_CODES.JavaClass.M) or
(PermissionsService.IsPermissionGranted(JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)));
end;
procedure RequestStoragePermission; // 请求获取储存权限
begin
PermissionsService.RequestPermissions([TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE],
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
begin
if (Length(AGrantResults) < 1) or (AGrantResults[0] <> TPermissionStatus.Granted) then
begin
ShowMessage('无法获取储存权限,无法进行操作!');
end;
end);
end;
procedure OpenDocument(filename : string); // 打开文档
var
Intent: JIntent;
URI: Jnet_Uri;
begin
if HasStoragePermission then
begin
URI := TAndroidHelper.JFileToJURI(StrToJString(filename));
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(URI, StringToJstring('application/pdf'));
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP);
try
TAndroidHelper.Activity.startActivity(Intent);
except
on e: Exception do
ShowMessage('文档打开失败!' + sLineBreak + e.Message);
end;
end
else
begin
RequestStoragePermission;
end;
end;
```
可以将以上代码放入适当的单元或函数中,调用 `OpenDocument` 函数即可打开指定的文档。在调用 `OpenDocument` 函数之前,需要检查是否已经获取了储存权限,如果没有,需要调用 `RequestStoragePermission` 函数请求获取权限。
阅读全文