【问题标题】:read files from in Android internal storage using delphi使用delphi从Android内部存储中读取文件
【发布时间】:2015-04-01 19:28:02
【问题描述】:

是否可以从 android /data/data/.... 的内部存储中读取 file.db 使用 android firemonkey 应用程序使用 delphi 而不是 java?,我尝试从内部存储打开文件,但即使我的设备是 Rooted,访问也被拒绝! 任何帮助将不胜感激。非常感谢。

【问题讨论】:

  • 您是要访问自己的应用程序或其他人的应用程序的内部存储空间吗?如果是其他人的,除非该应用明确授予访问权限,否则您无权访问。
  • 来自我自己的应用程序,换句话说,我需要在我的应用程序中打开文件或读取它
  • 我的意思是,你是想让你的应用访问它自己的内部存储,还是想让你的应用访问另一个应用的内部存储?应用程序可以完全访问自己的内部存储空间,但必须被授予访问另一个应用程序内部存储空间的权限。请显示您遇到问题的实际代码,并说明您使用的是哪个版本的 Delphi。
  • 我试图从我的应用程序 Delphi xe6 访问另一个应用程序内部文件,当我尝试复制或打开文件时访问被拒绝。
  • 同样,您的应用无权访问其他应用的内部存储文件,除非该应用明确授予访问权限。

标签: android delphi storage internal


【解决方案1】:

存储在内部存储中的文件对于创建它们的应用是私有的。您的应用无法访问其他应用的内部存储文件,除非该应用在创建文件时明确授予访问权限。这在 Android 文档中有明确说明:

Using the Internal Storage

默认情况下,保存到内部存储的文件对您的应用程序是私有的,其他应用程序无法访问它们(用户也不能)。

应用在内部存储中创建文件时(使用Context.openFileOutput()),选择是否使用MODE_PRIVATE权限:

默认模式,创建的文件只能由调用应用程序(或共享相同用户 ID 的所有应用程序)访问。

或者是否启用MODE_WORLD_READABLE和/或MODE_WORLD_WRITEABLE权限:

允许所有其他应用程序对创建的文件具有读取权限。

允许所有其他应用程序对创建的文件具有写访问权。

如果没有这些权限,您的应用将无法访问其他应用的文件。另请注意,这些权限在 API 级别 17 中已弃用

创建世界(可读|可写)文件是非常危险的,并且可能会导致应用程序中的安全漏洞。强烈建议不要这样做;相反,应用程序应该使用更正式的交互机制,例如 ContentProvider、BroadcastReceiver 和 Service。无法保证此访问模式将保留在文件上,例如在进行备份和恢复时。

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2016-08-29
    相关资源
    最近更新 更多