我是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读取文件?
非常感谢你!
答案 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目录级别不明显。