用于访问外部存储的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是否以这种方式对主外部存储访问起作用?
答案 0 :(得分:1)
你是对的,但要了解为什么让我们看看不同类型的外部存储及其权限系统的细节。
主要外部存储空间
在KitKat外部存储模型中,每个应用程序都被授予对主外部存储上的特殊主目录的访问权限。应用程序始终可以读取和写入外部主目录的内容,而无需需要特殊权限。但是,与应用程序的内部主目录相反,在某些情况下,其他应用程序也可以访问外部主目录。 READ_EXTERNAL_STORAGE为应用程序完全提供对主外部存储器的读访问权限,即使对于那里的所有主目录也是如此。但是,WRITE_EXTERNAL_STORAGE授予对主外部存储的写入和读取权限。 现在让我们问一下,如果持有上述许可的人可以篡改他们,为什么要有家庭目录呢?原因是那些新的外部家庭目的不是安全边界。让他们与众不同的是Android会在卸载拥有的应用程序后立即自动删除它们,因此我们在这里进行了自动清理。这也意味着您不应该将应用程序的私有数据(如凭据)或可利用的内容(例如配置文件)存储在外部存储器中。同样好的是媒体扫描仪忽略那些家庭目录。另外请记住,这部分内存可以安装在Android有效失去对数据控制权的计算机上。
辅助外部存储空间
在这里,外部家庭目标的概念再次出现,应用程序可以在不需要许可的情况下存储数据。同样,这些特殊的目录在卸载所有者应用程序时会自动删除,并且不提供安全性,因为SD卡可以在计算机上任意安装和修改。但与主外部存储相比,家庭目录外的所有数据都只能在此处读取。因此,实际上没有写访问权限,因为根本不打算这样做。
您的示例 在您的示例中,您完全正确的是,获得文件URI的已启动应用程序可以任意修改它,因为它具有正确的权限。