如何在 Android (2016) 中将音频分享到社交网络(Whatsapp、Facebook)? [复制]
Posted
技术标签:
【中文标题】如何在 Android (2016) 中将音频分享到社交网络(Whatsapp、Facebook)? [复制]【英文标题】:How to share an audio to social networks (Whatsapp, Facebook) in Android (2016)? [duplicate] 【发布时间】:2016-11-24 04:57:23 【问题描述】:我开发了一个“应用程序”,它是我国音板中非常受欢迎的人。这很简单,它有 6 个主要按钮,可以播放不同的声音,然后每个声音还有另外 2 个按钮,一个用于通过社交网络分享声音,另一个用于将声音设置为铃声、闹钟或通知。起初一切正常,但有一天,它突然停止了分享功能(其他功能仍在工作)。
对于我尝试共享的每个社交网络(或类似的内容,它是西班牙语),出现的消息都是“格式不兼容”。您可以点击此链接下载该应用程序download the app here
最后分享的发布代码如下:
private void shareItAYQueNoEntren()
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("audio/mpeg3");
Uri path = Uri.parse("android.resource://fzmobile.elgordodecentral/raw/" + R.raw.yquenoentren);
sharingIntent.putExtra(Intent.EXTRA_STREAM, path);
startActivity(Intent.createChooser(sharingIntent, "Share by..."));
并且raw文件夹中音频文件的扩展名是.mp3。
我该如何解决这个问题?
【问题讨论】:
如果应用程序在android 6.0及以上版本中无法运行,问题在于android 6及以上版本的manifest中的权限,您必须提供运行时权限才能读取sd卡 @SaravInfern 你能告诉我是哪个权限吗? 请参考here 【参考方案1】:试试这个:
String sharePath = Environment.getExternalStorageDirectory().getPath()
+ "your audio file path here";
Uri uri = Uri.parse(sharePath);
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("audio/*");
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Sound File"));
另外不要忘记添加权限 WRITE_EXTERNAL_STORAGE 否则在运行应用程序时会出错。
【讨论】:
我用这个试过你的代码: String sharePath = Environment.getExternalStorageDirectory().getPath() + "android.resource://fzmobile.elgordodecentral/raw/" + R.raw.yquenoentren;但它没有用。它说它无法附加一个空文件... 你的路径不正确 "android.resource://fzmobile.elgordodecentral/raw/" : 你想从RAW文件夹上传文件 例如:String sharePath = Environment.getExternalStorageDirectory().getPath() + "/Soundboard/Ringtones/custom_ringtone.mp3";【参考方案2】:将音频文件从资源复制到外部存储,然后共享:
InputStream inputStream;
FileOutputStream fileOutputStream;
try
inputStream = getResources().openRawResource(R.raw.sound);
fileOutputStream = new FileOutputStream(
new File(Environment.getExternalStorageDirectory(), "sound.mp3"));
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0)
fileOutputStream.write(buffer, 0, length);
inputStream.close();
fileOutputStream.close();
catch (IOException e)
e.printStackTrace();
然后
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/sound.mp3" ));
intent.setType("audio/*");
startActivity(Intent.createChooser(intent, "Share sound"));
为 AndroidManifest.xml 文件添加 WRITE_EXTERNAL_STORAGE 权限:
【讨论】:
成功了!非常感谢!!! 没问题,随时 请回答这个问题以上是关于如何在 Android (2016) 中将音频分享到社交网络(Whatsapp、Facebook)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将音频文件(wav格式)拼接成1秒的拼接?
有没有办法在android studio中将音频文件转换为字节数组