【问题标题】:Android SDK - Open any file I want?Android SDK - 打开我想要的任何文件?
【发布时间】:2012-02-26 21:19:19
【问题描述】:

根据 Android 开发文档,您不能只打开任何您想要的文件 ("Open a private file associated with this Context's application package for writing.")。

但是,当我希望我的应用程序读取其他应用程序创建的文件时怎么办?假设我在 /data/app_1/hello.txt 中有一个文件,但我的应用程序与它无关,因为我的应用程序名为 app_2,我如何仍然能够打开这个文件(并写回它)?

【问题讨论】:

    标签: android file sdk io


    【解决方案1】:

    一般情况下,您不能,Android 上的应用程序是孤立的。应用程序只能写入和读取自己的文件。

    也有例外:正如documentation 所说:“可以安排两个应用程序共享同一个 Linux 用户 ID,在这种情况下,它们可以访问彼此的文件。为了节省系统资源,具有同一个用户 ID 也可以安排在同一个 Linux 进程中运行,共享同一个 VM(应用程序也必须使用同一个证书签名)。”

    另一种可能性是文件被创建为“世界可读”,以便每个应用程序都可以读取它。

    所以总结一下,回到你的问题:如果你不能修改“my_app_1”,那是不可能的。您可以修改这两个应用程序,选择上述解决方案之一。

    【讨论】:

      【解决方案2】:

      两种选择:

      1. 如果您正在设计这两个应用程序并希望共享文件,请将其保存在其他地方(例如 - 外部存储)或使其成为全球可读的文件。
      2. 如果您尝试读取其他应用的文件 - 不应该,这是 android 安全架构中的关键元素。

      【讨论】:

      • 原因是我想创建一个存档游戏管理器,以便用户可以轻松地将存档游戏从一台设备移动到另一台设备。为了做到这一点,我需要访问这些文件。
      • 你的动机是一回事,一点也不坏,但对于某些人来说,还有其他(恶意)动机,Android 必须保护这些动机。
      • 查看我的答案,如果您可以修改您正在为其编写“保存游戏管理器”的“游戏”应用程序,这是可能的。
      • 不过应该​​是可以的,因为有应用可以浏览目录和读/写。例如有 ES 文件资源管理器,它甚至不需要 root。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多