【发布时间】:2014-01-13 19:32:02
【问题描述】:
我开始用Delphi XE5做一个android的app,遇到了一些麻烦。
我真的不明白如何获取路径。 将权限设置为写入和读取外部存储后,我尝试获取路径,以便查看保存我创建的文件的位置,这就是我得到的:
对于 System.IOUtils.TPath。 ->
GetDocumentsPath; - /data/data/com.myapp.app1/files
GetDownloadsPath; - /storage/emulated/0/Android/data/com.myapp.app1/files/Download
GetHomePath; - /data/data/com.myapp.app1/files
GetSharedDocumentsPath; - /storage/emulated/0/Android/data/com.myapp.app1/files
GetLibraryPath; - /data/data/com.myapp.app1/files
GetPublicPath; - /storage/emulated/0/Android/data/com.myapp.app1/files
GetPicturesPath; - /storage/emulated/0/Android/data/com.myapp.app1/files/Pictures
据我从其他主题了解,GetDocumentsPath 应该是默认 sdcard 路径,Downloads 应该是 sdcard/Downloads,但它使用的是 /Android/data/application 的文件夹/files/ 这里创建的文件夹已经存在于 sdcard自己。
/emulated/0/ 实际上与我手机上的 /sdcard/ 相同,如果这会让任何人感到困惑(以防万一......)。
据我了解,它有几个快捷方式,storage/emulated/0/,storage/sdcard0/,也可以从root的文件夹直接访问sdcard/(但我猜没有root访问权限的应用程序只有默认访问权限storage/ 文件夹,因此存在 storage/sdcard0 和 emulated/0 文件夹;但不知道为什么同一文件夹的快捷方式重复......)
[[还有storage/emulated/legacy/,它似乎也指向同一个文件夹,但我从来没有碰过它,因为我曾经在文件重复和奇怪的音乐库行为方面遇到一些麻烦,就在我扎根之前并将其格式化。从来没有想过到底发生了什么,但甚至不在乎。事实是,模拟文件夹似乎是邪恶且无法解释的;)]]
另外,这些路径问题是否与手机没有挂载选项,只有 MTP,或者它是 android 4.3 或....有关?
谢谢。
// 更新:如 Rufo 爵士建议的那样,关于此问题和屏幕分辨率的拆分问题。
更新: 看起来像硬编码'/sdcard/filename.extension'作为路径字符串可以完成这项工作,但是我不确定在应用程序中硬核位置是多么明智...://
【问题讨论】:
-
你应该把它分成两个问题 - 每个 SO 问题一个问题 :o)
-
好吧,至于这个文档,这一切都和我想的一样。因此,shared 确实将我发送到外部存储器到正确的目录中,例如图片、下载、音乐等。但是如果我想在 sd 卡中创建自己的应用程序文件夹,问题仍然存在。我通过 Android/data/com.something.appname/files 发送用户搜索以查找他导出的文件,而是在 SD 卡中创建文件夹,这很荒谬。另外,当应用程序在我的下载中创建文件夹时,我讨厌它。如果是图片,在 /Pictures、Music 中也可以有子文件夹,但我正在导出消息,所以这不会
-
属于 SD 卡上的任何现有子文件夹,即系统。我觉得这很荒谬,如果正如本文档所暗示的那样,没有硬编码就无法获得 sdcard 根文件夹的直接路径。至于我的手机,如果没有root或没有root访问权限,它就无法在其内部存储器中存储任何内容,因为“sdcard”实际上是内部存储器本身,而是充当外部存储器。所以,我不能使用任何内部路径,但没有获取外部根路径的选项,或者是吗? :/谢谢,不过。如果没有别的,它确实有助于验证我的路径结果......
-
我不明白你的问题。这就是安卓的工作方式。如果这是一个问题,你想要解决什么问题?您提到路径问题,是哪一个?
标签: android delphi delphi-xe5