【发布时间】:2015-04-26 10:51:34
【问题描述】:
我的 android 应用程序在 amazon s3 存储桶上有 mp3 文件。我有一个访问该音频剪辑的 URL。通过将 URL 传递给媒体播放器的数据源,我可以使用 MediaPlayer 播放音频剪辑。
我正在创建一个应用程序,它允许用户将我的应用程序中的音频剪辑共享到其他 IM 应用程序,例如 whatsapp。因此,我将在 Activity 上提供一个共享小部件,然后单击该小部件,然后应该打开 whatsapp 并且用户应该能够选择他想要共享音频剪辑的联系人。
为此,我需要将音频剪辑下载到本地存储系统,然后使用 ContentURI 与其他应用程序共享文件。但是我无法弄清楚最好的方法是什么。
根据 Android 文档,以下代码可用于发送二进制文件:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));
我假设音频文件是二进制文件。所以,我使用下面的代码来发送音频剪辑。
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, uriToImage);
intent.setType("audio/mpeg3");
startActivity(intent);
看起来我在这里缺少的唯一部分是“uriToImage”。谁能帮助我了解如何获取位于 URL 的资源的“uriToImage”。 ?
根据 CommonsWare 的评论更新了代码。以下是更新后的代码:
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
Uri contentUri = Uri.fromFile(new File(clipAudioUrl));
intent.putExtra(Intent.EXTRA_STREAM, contentUri);
intent.setType("audio/mpeg");
intent.setPackage("com.whatsapp");
startActivity(intent);
触摸共享小部件后,Watsapp 正在直接打开(这是我想要的),但是共享却出现错误“共享失败”。我假设这是因为我使用了以下代码的 uri:
Uri contentUri = Uri.fromFile(new File(clipAudioUrl));
根据 CommonsWare 的评论,whatsapp 还希望 URI 的格式为“file:\”或“content:\”
您能否帮我将 URL 转换为“file:\”或“content:\”的格式。谢谢。
【问题讨论】:
-
“例如,当用户单击图像时,应将音频剪辑发布到 watsapp”——什么图像? WhatsApp 与这张图片有什么关系?
-
我已经更新了这个问题。你能帮我吗?我需要一个真正快速的解决方案。
标签: java android android-intent mobile-application