访问sdcard android上的文件

时间:2011-03-15 08:10:11

标签: android sd-card filepath

我是Android开发的新手。我正在尝试使用以下代码通过gmail通过电子邮件发送我的motorola里程碑文件。

    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("audio/mp3");
    sendIntent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/king1.mp3");
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    sendIntent.putExtra(Intent.EXTRA_TEXT, "this is the email content2");
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/king1.mp3"));
    startActivity(Intent.createChooser(sendIntent, "Title:"));

运行代码会发送电子邮件,但发送的附件为0kb。我在互联网上的其他地方看到过这个问题,但我不确定我是否正在声明文件的正确路径。我怎么知道文件的确切路径?如果我挂载它,我得到的路径是/ Volumes / NO NAME / king1.mp3。

我是否需要先使用fileinputstream读取文件?

非常感谢你!

3 个答案:

答案 0 :(得分:2)

尝试

Environment.getExternalStorageDirectory()

获取SD卡的根目录。

答案 1 :(得分:2)

@sanna是正确的,您应该使用Environment.getExternalStorageDirectory(),但是,我建议先使用Environment.getExternalStorageState()来确定您是否能够访问存储 - 例如,在您的示例中,当SD卡已安装在PC上。

答案 2 :(得分:1)

在我的设备上,外部sd数据位于另一个名为“external_sd”的目录中。 Environment.getExternalStorageDirectory()给出了sd卡的根目录,但如果你从计算机上将数据放在你的设备上,它可能在“file://”+ Environment.getExternalStorageDirectory()+“/ external_sd /”

只有使用设备上的“我的文件”应用程序才能明显看出,当通过USB安装在计算机上时,external_sd目录级别不明显。