如何在KitKat操作系统中将文件写入可移动SD卡(而不是外部SD卡)?

3
在Android API>19中,是否有获取可移动SD卡路径的方法?
例如,Galaxy S4有两个SD卡 - 一个是内置SD卡,可以通过Environment.getExternalStorageDirectory();进行检测。 另一个是可选的,但如果用户插入它 - 我该如何通过某种方法获得其路径?如果有一种方法可以知道它是否被挂载 - 也请告诉我。

看这个:http://sigidin.blogspot.com/2011/08/check-external-sd-card-on-android.html - mvp
1
不,它会返回好的目录。例如,/storage/emulated/0和/storage/sdExtCard。您可以将文件写入/storage/emulated/0,这在我的情况下是一个通常的getExternalStorageDirectory()路径,但如果您尝试写入/storage/sdExtCard,则会收到错误。它在所有早期的KitKat设备上都运行良好,但在KitKat上,这种访问被阻止了,我不知道为什么。 - Vlad Alexeev
实际上,将权限“WRITE_MEDIA_STORAGE”添加到您的“AndroidManifest.xml”文件中可能会解决此问题:http://www.androidpolice.com/2014/02/17/external-blues-google-has-brought-big-changes-to-sd-cards-in-kitkat-and-even-samsung-may-be-implementing-them/ - mvp
奇怪的是,我无法将其添加到我的清单中 - 显示错误,就像它不知道这个权限一样。 - Vlad Alexeev
啊,这是系统级权限 - 只有在ROM应用程序才能使用它。这要怪谷歌。这个问题在三星设备和青柠模块中已经解决,但在纯净的Kitkat中没有解决。 - mvp
显示剩余3条评论
2个回答

1

没有可靠的方法确定可移动微型SD卡的路径。即使是在我的两个Kitkat设备上,getExternalFilesDirs()也无法做到这一点。您必须要求用户指定确切的路径。


-3

Environment.getExternalStorageDirectory();可以给你想要的结果!尽管术语“external”有点误导。

编辑:

它会给你两个SD卡的目录!你需要通过以下方式选择其中一个:

File storageDir = new File("/mnt/");
if(storageDir.isDirectory()){
    String[] dirList = storageDir.list();
    //Select card here
}

1
它返回给我的是内置SD卡,而不是可移动的SD卡。我在两部手机上进行了测试——Galaxy S4和Highscreen Omega Prime Mini——这两部手机都使用此方法来使用内置SD卡,而不是可移动的SD卡。 - Vlad Alexeev
好的,请这样看待它:一些手机或平板电脑在工厂内放置了一个小型SD卡,它们还有一个额外的插槽可用于放置另一个SD卡。因此,现在许多设备都有两个SD卡-一个是2GB-8GB的不可移动卡,但被Android定义为外部SD卡,另一个是用户决定放置的卡。那么,如何访问具有2个SD卡的设备中的第二个SD卡呢? - Vlad Alexeev
1
有时候不是mnt,而是/storage/。顺便说一句,不是我在给你点踩。 - Vlad Alexeev
好的制造商只会让它变得更难...我对我已经发布的内容毫无头绪。谁在乎那个踩我的人,如果这个人知道解决方案,他就可以写出来。但他不知道... - PKlumpp
我不会给这个答案点踩,但是它是错误的。在许多Android 4.4设备上这并不能正常工作。 - greenapps
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接