将文件写入SD卡而不是USB存储。

7
我正在开发一个需要将文件写入SD卡的应用程序。我正在使用GetExternalStoragePublicDirectory()来确定要写入的目录。
我有两个手机正在开发中。在运行Android 4.0.4(冰激凌三明治)的Google Nexus S上,它返回了SD卡上的一个目录。但是,在运行Android 2.3.5的Samsung Exhibit 2上,它直接写入到手机上的USB存储器。
有没有一种方法可以强制使用SD卡?
编辑:
我发现getExternalStoragePublicDirectory()和getExternalStorageDirectory()总是返回“/ mnt / sdcard /”。这实际上不是SD卡的挂载位置。在Samsung Exhibit 2上,这是USB存储位置。卡挂载位置为“/ mnt / sdcard / external_sd”。有没有办法返回这个实际的sd位置?
我看到相机和其他应用程序已经找到了一种方法。相机应用程序具有“存储”设置,其中包括“手机”和“存储卡”选项。如果指定“存储卡”,则图像实际上存储在SD卡上。

1
+1 "Android将在所有设备上始终运行相同",最好我们使用“平台无关的开发”哈哈哈。 Motorola Defy:sdcard-ext(不是下划线)。 - user529543
2个回答

2

有没有一种方法可以返回实际的SD卡位置?

抱歉,在当前的Android SDK中没有这样的方法。

我看到相机和其他应用程序已经找到了方法。

大多数情况下,它们要么是由设备制造商编写的,要么是通过MediaStore读取信息,该库应该索引两个来源。


0

如果您只想写入SD卡,请使用以下方法

File mySdCardPath = Environment.getExternalStorageDirectory();
File dir = new File (mySdCardPath.getAbsolutePath() + "/yourDirectoryName");

1
所描述的解决方案在两个手机上的行为与使用GetExternalPublicDirectory("yourDirectoryName")相同。从GetExternalStorageDirectory()返回的目录实际上是“/mnt/sdcard”。显然,在三星展示2上,这是USB存储。实际的sdcard位于“/mnt/sdcard/external_sd”。显然,这是一个已知的问题。请参见:https://dev59.com/ZG025IYBdhLWcg3w960W - Kevin Westwood

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