2013-03-15 135 views
11

我有一堆来自不同供应商的Android设备。一些Android设备将内部存储视为SD卡和外部存储EXTSD

它们中的一些附连的/ mnt/SD卡的内部存储和/ MNT/extsd到 外部存储装置(方案1)和其他附加的/ mnt/SD卡到外部存储设备(场景2)

我认为第二种情况是标准的,因为Android API提供了这个路径的句柄。现在问题是,在场景1中,/mnt/extsd变为readonly即使有WRITE_EXTERNAL_STORAGE权限!

这意味着我只能从实际的外部SD卡读取数据,无法写入数据。

是否有解决方法,因此我可以写入extsd文件夹?

+1

这是我更好要问的问题这个社会:https://android.stackexchange.com/ – noraj 2017-08-10 16:57:16

回答

0

唯一的解决办法,到目前为止我发现来获得设备上写访问生根设备:(

三星提供了一个解决办法:与清单条目

更多细节在可用以下链接

http://www.xda-developers.com/android/android-3-2-code-inadvertently-preventing-write-access-to-external-storage/

http://www.chainfire.eu/articles/113/Is_Google_blocking_apps_writing_to_SD_cards_/

摘录:

这似乎是谷歌在那 针对Android 3.2,这会影响介绍了他们的AOSP代码中的错误是怎么OS处理USB 存储,并且可以防止SD卡的写访问和USB棒。 XDA 精英认可的开发者,资深主持人和新闻作家 Chainfire总结了这一问题在他的博客:

“在过去,一个应用程序将请‘WRITE_EXTERNAL_STORAGE’ 许可,这将给予所有写访问外部存储器 (用户/组“sdcard_rw”)。显然已将其更改为仅对 授予对主外部存储器的写入访问权限。第二个 权限已被引入,名为“WRITE_MEDIA_STORAGE”,其中 将授予对其他外部存储的访问权限(用户/组 “media_rw”)。

问题是,第三方实际上不会被授予这个 权限,只有制造商提供的系统应用和应用程序 通常会被授予此权限。有 例外,显然在某些设备上的第三方应用程序将是 授予此权限,但根据AOSP源,他们肯定 不应该。”

+0

在一个根植设备上,你将如何解决这个问题?例如,Cubieboard默认为root,内部SD非常小,但默认情况下,应用程序无法向外部写入 – TimothyP 2013-04-20 07:57:30

4
Environment.getExternalStorageState() returns path to internal SD mount point like "/mnt/sdcard" 

Environment.getExternalStorageDirectory()指无论设备制造商认为是“外部存储”。在某些设备上,这是可移动媒体,如SD卡。在某些设备上,这是设备上闪光灯的一部分。在这里,“外部存储”是指“安装在主机上时可通过USB大容量存储模式访问的东西”,至少对于Android 2.x及以上版本而言。

But the question is about external SD. How to get a path like "/mnt/sdcard/external_sd" (it may differ from device to device)? 

除了外部存储,Android没有“外部SD”的概念,如上所述。

如果设备制造商选择将外部存储设备设置为板载闪存并且还具有SD卡,则需要联系该制造商以确定您是否可以使用SD卡(不保证)以及什么规则是使用它的,比如使用什么路径。

4

在有根设备,你可以改变你/system/etc/permissions/platform.xml“修理”的权限问题,我下面的工作:

  • 亚行拉/system/etc/permissions/platform.xml
  • 修改平台。 xml使media_rw包含在WRITE_EXTE中RNAL_STORAGE允许这样的:

    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" > 
        <group gid="sdcard_rw" /> 
        <group gid="media_rw" /> 
    </permission> 
    
  • 亚行推platform.xml /system/etc/permissions/platform.xml

  • 重启设备
+0

谢谢,这对我来说确实如此。我不明白为什么谷歌会强制执行这样的权限限制。 – ebernie 2013-05-12 18:28:34

+2

这是一个用户解决方案,而不是开发人员解决方案。 – aleb 2013-05-17 16:49:21