【发布时间】:2019-05-03 22:23:49
【问题描述】:
我曾经在西雅图德尔福创建了一个项目,现在我想搬到德尔福里约。 我使用 findfirst/findnext 读取了外部 SD 卡上的目录结构
i := findfirst(datadir + '*', faanyfile, ts);
datadir 变量包含一个有效目录。在西雅图,代码运行良好(返回值 i=0)并且第一个目录条目在变量 ts 中返回。 现在,在 Rio 上编译相同的代码,我得到一个返回错误值 i=13(访问被拒绝)。
在我的项目中设置了 READ_EXTERNAL_STORAGE 权限。
如果我将清单文件中的 targetSdkVersion(在 Rio 中自动设置为 26)硬编码为 19(即 minSdkVersion),则即使在 Rio 中,代码也会再次工作。 那么很明显,一些处理 sd 卡访问的方法已经从 sdk 级别 19 更改为 26?
有什么提示吗?
【问题讨论】:
-
如果您在西雅图创建应用程序,并将其迁移到 Rio,您需要将 添加到 AndroidManifest.template.xml 中的 之前,并检查项目选项中权利列表中的安全文件共享选项
-
@DaveNottage Dalija 下面的回答是处理 API 23 及更高版本(Rio 针对)的权限的方法。请注意,RequestPermissions 接受权限字符串数组,以防您需要一次请求多个权限。
标签: android delphi sdk findfirst delphi-10.3-rio