Android 4.4:WRITE_EXTERNAL_STORAGE权限对主外部存储/ mnt/sdcard有效吗?

P5m*_*sic 5 storage android android-sdcard android-permissions android-4.4-kitkat

用于访问外部存储的Android 4.4新规则似乎打破了许多应用程序.

根据这个:http://source.android.com/devices/tech/storage/(仔细阅读)似乎WRITE_EXTERNAL_STORAGE权限不再允许在Android 4.4中使用/ mnt/external_sd路径访问辅助可移动存储.他们说,应用程序只能访问辅助可移动存储上的私人文件夹,并在删除应用程序时将其删除.

现在,我认为,根据隐含的内容,WRITE_EXTERNAL_STORAGE将在主外部存储/ mnt/sdcard上授予访问权限.

如果是真的,例如,我的应用程序可以启动另一个应用程序并使用文件:// url在主外部存储中提供,然后被调用的应用程序可以编辑并将文件保存到同一路径,前提是它具有WRITE_EXTERNAL_STORAGE权限.

Android 4.4是否以这种方式对主外部存储访问起作用?

use*_*866 1

您是对的,但为了了解原因,让我们看一下不同类型的外部存储及其权限系统的详细信息。

主外部存储

在 KitKat 外部存储模型中,每个应用程序都被授予对主外部存储上特殊主目录的访问权限。应用程序始终可以读取和写入这些外部主目录的内容,而无需特殊权限。然而,与应用程序的内部主目录相反,外部目录在某些情况下也可以被其他应用程序访问。READ_EXTERNAL_STORAGE 为应用程序提供了对主外部存储器的完全读取访问权限,甚至对于那里的所有主目录也是如此。然而,WRITE_EXTERNAL_STORAGE 授予主外部存储的写入和读取权限。现在让我们问一下,如果持有上述权限的任何人都可以篡改它们,为什么还要有一个主目录呢?原因是这些新的外部主目录并不意味着安全边界。它们的特别之处在于,一旦卸载所属应用程序,Android 就会自动删除它们,因此我们在这里进行了自动清理。这也意味着您根本不应该将应用程序的私有数据(例如凭据)或可利用的数据(例如配置文件)存储在外部存储器上。同样好的一点是媒体扫描仪会忽略那些主目录。另请记住,这部分内存可以安装在 Android 有效地失去对数据控制的计算机上。

辅助外部存储

在这里,外部主目录的概念再次出现,应用程序可以在不需要许可的情况下存储数据。同样,这些特殊目录会在卸载所有者应用程序时自动删除,并且不提供安全性,因为 SD 卡可以在计算机上任意安装和修改。但与主外部存储相比,主目录之外的所有数据在这里都是只读的。所以实际上没有写访问权限,因为这根本不是有意的。

您的示例 对于您的示例,您是绝对正确的,因为给定文件 URI 的启动应用程序可以任意修改它,只要它具有正确的权限。

如果您对更多详细信息感兴趣,此处此处的这些帖子提供了对新存储模型的深入了解。