将文件保存到外部存储中的文件夹并共享

时间:2015-11-02 21:19:42

标签: android audio share

我正在制作一个音板应用程序,我需要在长按button1时共享sound1。我可以使用此代码编辑共享菜单:

Button button1;


    button1 = (Button) v.findViewById(R.id.button1);
    button1.setLongClickable(true);

    button1.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View arg0) {

            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("audio/ogg");

            Uri.parse("android.resource://test.testapp/" + R.raw.sound1);
            shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://test.testapp/" + R.raw.sound1));
            startActivity(Intent.createChooser(shareIntent, "Share Sound"));

            return true;
        }

    });


    return v;
}

我可以与whatsapp和Google云端硬盘完美地共享音频文件,但其他应用无法正常工作。我已经读过你必须将文件复制到外部存储器,并从那里共享它们。我现在已经搜索了将近两天,但我找不到办法做到这一点。 Stack上的其他文章也没有帮助我:/

如何在外部存储中创建目录,将文件(sound1.ogg)从我的/ raw文件夹复制到该文件夹​​,然后与其他应用程序(Gmail,Google Drive,Whatsapp,Skype等)共享该声音。 )?

1 个答案:

答案 0 :(得分:0)

将内容保存到外部存储非常简单。 首先,您需要将其添加到清单文件中以允许外部存储写入:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

然后在你的活动/片段中:

 String root = Environment.getExternalStorageDirectory().toString();
 File myDir = new File(root + "/saved_images");  
 myDir.mkdirs();  
 File file = new File (myDir, "FILE_NAME");
 ... however you write the file through output stream ....

由于这些是音频文件,您应该将它们存储在每个用户Android手机的公共音频库中。您可以像这样访问它:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)

我建议查看this article以获取更多信息!