2015-11-02 133 views
0

我正在制作一个音板应用程序,并且在按钮1被长时间按下时我需要共享sound1。我可以让共享菜单COM了这个代码:将文件保存到外部存储器中的文件夹并共享

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的和谷歌驱动器完全共享的音频文件,但其他应用程序不工作。我读过,你必须将文件复制到外部存储,并从那里分享。我已经搜索了近两天,但我找不到一种方法来做到这一点。有关Stack的其他文章也不帮助我:/

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

+0

你有没有看到这篇文章? http://stackoverflow.com/questions/17794974/create-folder-in-android – Mario

回答

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更多信息看!

+0

只需添加到答案:将这些音频文件保存到公共音频文件夹允许任何应用程序能够访问它!因此,如果应用允许发布或上传任何类型的音频文件,只要将它们保存在此文件夹中,就可以访问它们。 – Shrey

+0

我不认为它们应该存储在音乐文件夹中,因为它们确实很短(1-6秒) – Spickle

相关问题