2

有人可以解释/Android/data/< package_name>/files/这里描述的应用程序特定文件夹的权限http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

目前尚不清楚它何时对应用程序真正私有以及何时是世界可读的。是否启用 USB 大容量存储时,外部存储中的文件(包括应用程序特定文件夹)是世界可读的?

我尝试使用文件管理器应用程序(ASTRO 文件管理器),并且能够在 sdcard 上的应用程序特定文件夹中查看/打开文件,这与设置Protect USB storage下的开发人员选项中的设置无关。我正在使用运行 4.3 版 android 的 Google Nexus 4。

因此,当此文件夹/Android/data/appname/files/对应用程序真正私有时,会令人困惑。

谢谢。

4

4 回答 4

5

让我们谈谈 Android 的安全性,好吗?

  1. 您无法在无根设备上访问应用程序的主目录。这将是一个主要的安全漏洞。

  2. 不推荐创建 WORLD_READABLE 文件,从 API 中的文本判断,这是“decperacted”表示“不推荐使用”的情况之一。

  3. 那么 - 你想在应用程序之间传递数据吗?

    一个。您可以将文件保留在指定位置以供第二个应用程序获取。这是一个坏主意。它乱扔用户的存储空间,根本没有安全性,第二个应用程序没有收到有关待处理更新的通知,您无法轻松确定事务状态。我建议你远离这种方法。尽管如此,我已经在下面的更新部分进行了一些阐述。

    湾。对于简单的小块数据,我建议您采用Intent/BroadcastReceiver 方法

    C。如果您想以正确的方式做事,您可以采用ContentProvider 方法。

    d。您可以采用Intent/Service 方法

    e. 对于真正的 IPC -使用 AIDL

更新:

我建议你从通读谷歌的文章开始。本文明确处理了在应用程序之间传输大文件的情况。此外,正如您可以清楚地看到的那样,术语非常混乱。

因此,让我们根据 Google 关于该主题的文章来回顾您的问题。

内部存储是您的应用程序私有的,其他应用程序无法访问。您可以通过Context.html#getFilesDir()访问其目录结构。

请注意:

  1. 当用户卸载应用程序时,此处写入的文件将被删除。

外部存储可以是物理内部(内置存储)或外部(可移动 SD 卡)。这里没有安全模型,文件对全世界都是可见和可访问的。您可以通过Context.html#getExternalFilesDir()访问外部目录结构。请注意:

  1. 此目录可能无法访问(当用户将设备连接到计算机或移除 SD 卡时)。

  2. 每个设备用户可能有一个单独的目录。

  3. 即使用户卸载应用程序,文件仍然存在。

于 2013-10-21T08:49:07.413 回答
1
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

因陀罗的观点是正确的。阅读EXTERNAL_STORAGE你需要把这个uses-permission

于 2013-10-24T11:44:32.660 回答
0

试试这个权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-10-21T06:48:38.247 回答
0

据我所知,外部存储上的文件是公开的,但正如Indra 指出的那样,如果您希望您的应用程序读取它们,您确实需要权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我认为只有内部存储文件是私有的,需要从您的应用程序(或使用与您的应用程序相同的密钥签名的应用程序)外部读取 ROOT 访问权限。

于 2013-10-21T07:03:13.573 回答