我正在尝试将我的声音保存在内部存储中,而不是共享它们,但是当我按下分享按钮时我的应用程序总是崩溃
public void savesSound(){
FileOutputStream fos;
String FILENAME = "sharedsound.mp3";
File f = new File(FILENAME);
try {
InputStream in = getResources().openRawResource(R.raw.ichbin);
fos = new FileOutputStream(f);
fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf, 0, buf.length)) != -1) {
fos.write(buf, 0, len);
}
fos.close();
Log.i("Tag","Finish");
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
和分享按钮
FileInputStream fin = null;
try {
fin = openFileInput("sharedsound.mp3");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Uri uri = Uri.parse(fin.toString());
shareIntent.setType("audio/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hey Check this out Dude");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));
答案 0 :(得分:0)
首先,toString()
上的InputStream
未提供Uri.parse()
可以使用的路径。
其次,您无法通过file://
Uri
与其他应用共享内部存储中的文件,因为其他应用无法访问该文件。
您可以use FileProvider
将文件提供给第三方应用。 the Android training modules和here is a sample app之一涵盖了最初作为资产打包的PDF,来自内部存储。