从内部存储共享 mp3 数据
Sharing mp3 data from Internal Storage
我试图将我的声音保存在内部存储中而不是共享它们,但是当我按下共享按钮时我的应用程序总是崩溃
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)));
首先,InputStream
上的 toString()
没有提供可供 Uri.parse()
使用的路径。
其次,您无法通过 file://
Uri
与其他应用共享内部存储中的文件,因为其他应用无权访问该文件。
您可以 use FileProvider
to serve your files to third-party apps. This is covered in one of the Android training modules, and here is a sample app 从内部存储共享最初打包为资产的 PDF。
我试图将我的声音保存在内部存储中而不是共享它们,但是当我按下共享按钮时我的应用程序总是崩溃
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)));
首先,InputStream
上的 toString()
没有提供可供 Uri.parse()
使用的路径。
其次,您无法通过 file://
Uri
与其他应用共享内部存储中的文件,因为其他应用无权访问该文件。
您可以 use FileProvider
to serve your files to third-party apps. This is covered in one of the Android training modules, and here is a sample app 从内部存储共享最初打包为资产的 PDF。