如何在 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)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在android中将音频注入语音流

如何在python中将音频文件(wav格式)拼接成1秒的拼接?

有没有办法在android studio中将音频文件转换为字节数组

如何在Android中将时间戳字符串转换为日期[重复]

如何在 Objective-C 中将照片分享到 Facebook?

如何在 Android 上的 Termux 中将麦克风录制到 mp3?