外部存储上的应用程序特定文件夹的权限

时间:2013-10-21 06:41:36

标签: android android-sdcard

有人可以解释此处所述的应用专用文件夹/Android/data/< package_name>/files/的权限http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

目前还不清楚它何时真正属于应用程序,何时它是世界可读的。在启用USB大容量存储的情况下,外部存储中的文件(包括应用程序特定文件夹)是否具有全球可读性?

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

当这个文件夹/Android/data/appname/files/真正属于应用程序时,会让人感到困惑。

感谢。

4 个答案:

答案 0 :(得分:5)

让我们谈谈一些Android安全性,不管吗?

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

  2. Creating WORLD_READABLE files is deprecated,根据API中的文字判断,这是“decperacted”表示“已弃用”的情况之一。

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

    一个。您可以将文件保留在第二个应用程序的设置位置。但这是一个坏主意。它会占用用户的存储空间,根本没有安全性,第二个应用程序不会通知待处理的更新,您无法轻易确定事态。我建议你不要采用这种方法。尽管如此,我还是在下面的UPDATE部分中详细介绍了一些内容。

    湾对于简单的小块数据,我建议你去Intent/BroadcastReceiver approach

    ℃。你可以去ContentProvider approach你想以正确的方式做事。

    d。你可以去Intent/Service approach

    即对于真正的IPC - use AIDL

  4. <强>更新

    我建议您先阅读Google's article。本文清楚地介绍了在应用程序之间传输大文件的情况。此外,正如您可以清楚地看到的那样,术语非常混乱。

    让我们根据Google关于此主题的文章来审核您的问题。

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

    请注意:

    1. 当用户卸载应用程序时,将删除此处写入的文件。
    2. 外部存储可以是物理内部(内置存储)或外部(可移动SD卡)。这里没有安全模型,文件可见并且可供全世界访问。您可以通过Context.html#getExternalFilesDir()访问外部目录结构。请注意:

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

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

      3. 即使用户卸载应用程序,文件也会保留。

答案 1 :(得分:1)

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

Indra的观点是正确的。要阅读EXTERNAL_STORAGE,您需要将此uses-permission

答案 2 :(得分:0)

尝试此权限

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

答案 3 :(得分:0)

据我所知,外部存储设备上的文件是公开的,但如果您想要您的应用来阅读它们,则Indra points out需要获得许可:

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

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