Delphi读取具有 READ_EXTERNAL_STORAGE 权限设置的外部存储  
官方Delphi 学习QQ群: 682628230(三千人)
频道

Delphi读取具有 READ_EXTERNAL_STORAGE 权限设置的外部存储


Android OS从 API 23 开始引入了运行时权限模型。

这意味着除了在 Manifest 中指定权限外,您还需要在运行时要求用户授予您所谓的危险权限。用户可以选择在被询问时授予您权限,但也可以随时撤销该权限。

每当您的应用程序处理需要运行时权限的代码时,它必须验证用户授予您该权限并准备处理用户未授予您权限的情况。

READ_EXTERNAL_STORAGE 是其中之一。

可以在权限概述中找到不同权限的概述(包括它们的分类)

要将您的应用程序上传到 Google Play 商店,您的应用程序需要支持最低 API 26(目前)并且 Delphi Rio 默认针对新的 API 级别。它还引入了对在运行时询问权限的支持。

以下是请求READ_EXTERNAL_STORAGE许可并从共享下载文件夹读取文件的基本示例。


uses

  System.Permissions,

  Androidapi.Helpers,

  Androidapi.JNI.App,

  Androidapi.JNI.OS,

  ...


procedure TMainForm.AddFiles;

var

  LFiles: TArray<string>;

  LFile: string;

begin

  LFiles := TDirectory.GetFiles(TPath.GetSharedDownloadsPath);

  for LFile in LFiles do

    begin

      Memo1.Lines.Add(LFile);

    end;

end;


procedure TMainForm.Button1Click(Sender: TObject);

begin

  PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)],

    procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)

    begin

      if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then

        begin

          Memo1.Lines.Add('GRANTED');

          AddFiles;

        end

      else

        begin

          Memo1.Lines.Add('NOT GRANTED');

        end;

    end)

end;



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.036020994186401 seconds