通过WhatsApp共享原始资源

4
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://" + ContextID.getPackageName() + "/" + ResourceID));
share.setType("audio/*");
ContextID.startActivity(Intent.createChooser(share, "Condividi il suono"));

以上代码在Gmail上可以正常运行,而Whatsapp会弹出一个消息提示"共享文件失败,请重试"

也许我和这个人遇到了相同的问题:Intent.ACTION_SEND Whatsapp

但是,我如何暂时将我的资源复制到SD卡上并分享它们呢?

2个回答

6
File dest = Environment.getExternalStorageDirectory();
InputStream in = ContextID.getResources().openRawResource(ResourceID);              

try 
{
    OutputStream out = new FileOutputStream(new File(dest, "lastshared.mp3"));  
    byte[] buf = new byte[1024];
    int len;
    while ( (len = in.read(buf, 0, buf.length)) != -1)
    {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}
catch (Exception e) {}              

Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().toString() + "/lastshared.mp3"));
share.setType("audio/*");
ContextID.startActivity(Intent.createChooser(share, "Condividi il suono \"" + TheButton.getText() + "\""));
return true;

清单文件:

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

1
嗨,我正在使用您的代码通过WhatsApp发送mp3文件,但是我遇到了类似于“发送失败,请重试”的错误。您知道如何克服这个问题吗?提前致谢。 - alvaro.delaserna
它正在工作...如果您尝试直接从资产共享,WhatsApp将不允许。 - Ramesh_D
非常感谢!干得好;) - Manza
你不需要 WRITE_EXTERNAL_STORAGE 权限,因为可以通过内容提供者来完成。相反,在外部存储中保存并分享文件之前,请通过内容提供者共享你的文件。 - kartikag01

0
请更改您代码中的这一行,您将能够分享 将("audio/*")改为以下形式:("audio/mp3")
share.setType("audio/mp3");

这是因为 WhatsApp 的共享类型不支持 ("audio/*")("*/*")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接