从内部存储共享mp3数据

时间:2015-01-04 16:38:06

标签: android android-intent share

我正在尝试将我的声音保存在内部存储中,而不是共享它们,但是当我按下分享按钮时我的应用程序总是崩溃

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)));

1 个答案:

答案 0 :(得分:0)

首先,toString()上的InputStream未提供Uri.parse()可以使用的路径。

其次,您无法通过file:// Uri与其他应用共享内部存储中的文件,因为其他应用无法访问该文件。

您可以use FileProvider将文件提供给第三方应用。 the Android training moduleshere is a sample app之一涵盖了最初作为资产打包的PDF,来自内部存储。