Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 4.4:WRITE_EXTERNAL_STORAGE权限在主外部存储/mnt/SD卡上有效吗?_Android_Storage_Android Sdcard_Android 4.4 Kitkat_Android Permissions - Fatal编程技术网

Android 4.4:WRITE_EXTERNAL_STORAGE权限在主外部存储/mnt/SD卡上有效吗?

Android 4.4:WRITE_EXTERNAL_STORAGE权限在主外部存储/mnt/SD卡上有效吗?,android,storage,android-sdcard,android-4.4-kitkat,android-permissions,Android,Storage,Android Sdcard,Android 4.4 Kitkat,Android Permissions,Android 4.4访问外部存储的新规则似乎打破了许多应用程序 据此:(仔细阅读) 似乎WRITE_EXTERNAL_STORAGE权限不再授予访问Android 4.4中具有/mnt/EXTERNAL_sd路径的辅助可移动存储的权限。 他们说,应用程序只能访问辅助可移动存储上的私人文件夹,当应用程序被删除时,它就会被删除 现在,我认为,根据隐含的含义,WRITE_EXTERNAL_存储将转而授予对主外部存储/mnt/sdcard的访问权 如果为真,例如,我的应用程序可能会启动另一个应用程序,

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

据此:(仔细阅读) 似乎WRITE_EXTERNAL_STORAGE权限不再授予访问Android 4.4中具有/mnt/EXTERNAL_sd路径的辅助可移动存储的权限。 他们说,应用程序只能访问辅助可移动存储上的私人文件夹,当应用程序被删除时,它就会被删除

现在,我认为,根据隐含的含义,WRITE_EXTERNAL_存储将转而授予对主外部存储/mnt/sdcard的访问权

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


安卓4.4在主外部存储访问方面是这样工作的吗?

你是对的,但我们来看看为什么不同类型的外部存储及其权限系统的细节

主外部存储

在KitKat外部存储模型中,每个应用程序都被授予访问主外部存储上特殊主目录的权限。应用程序始终可以读取和写入这些外部主目录的内容,而无需特殊许可。然而,与应用程序的内部主目录不同,在某些情况下,其他应用程序也可以访问外部主目录。READ_EXTERNAL_存储器为应用程序提供了对主外部内存的完全读取权限,即使是对主外部内存中的所有主目录也是如此。但是,写入外部存储会授予主外部存储的写入和读取权限。 现在让我们问一下,如果持有上述权限的人可以篡改它们,为什么要有一个home dir?原因是,这些新的外部住宅DIR并不意味着作为安全边界。让它们与众不同的是,Android会在拥有的应用程序卸载后自动删除它们,所以我们这里有自动清理功能。这也意味着你们根本不应该在外部内存中存储应用程序的私有数据,比如凭证或可利用的东西,比如配置文件。还有一个好处是,媒体扫描程序忽略了那些主目录。还请记住,这部分内存可以安装在Android实际上无法控制数据的计算机上

辅助外部存储

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

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


如果您对更多详细信息感兴趣,请参阅这些文章,并提供对新存储模型的深入了解

如果你有这样一个kitkat设备,你可以很容易地找到你自己。请张贴您迄今为止尝试过的内容。结果是什么?当我尝试访问moto e上的外部sd卡时,即使我在manifest-Environment.getExternalStorageDirectory().getAbsolutePath()上添加写权限,它也只返回null,该权限仅返回内部sd卡路径