android - Android Studio 音频共享问题
问题描述
b1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Uri uri = Uri.parse("android.resource://haydo.kufurbaz.kfrbazhaydosesleri/raw/aaaww.mp3");
Intent myınIntent = new Intent(Intent.ACTION_SEND);
myınIntent.setType("audio/*");
String sharebody = "Your body here";
myınIntent.putExtra(Intent.EXTRA_STREAM,uri);
startActivity(Intent.createChooser(myınIntent,"Share using"));
return true;
}
});
例如,当我选择在 GMail 上共享它时,它会显示“无法附加空文件”之类的内容。看起来我没有得到正确的文件路径,所以我基本上什么都不分享。我究竟做错了什么?
任何帮助将非常感激。
解决方案
重复的问题
Android 将文件附加到 GMAIL - 无法附加空文件
他们如何解决问题?通过@guifgdeo
好的,经过大量研究并拦截了一些 Intent,现在可以开始工作了。
我所要做的就是将 file:/// 更改为 content://。
我是根据来自 Android 的以下信息执行此操作的:https ://developer.android.com/reference/android/support/v4/content/FileProvider.html
唯一的主要变化是我使用了 /sdcard/file.ext 的硬编码路径。另外,线
getUriForFile(getContext(), "com.mydomain.fileprovider", newFile);
改为
Uri contentUri = FileProvider.getUriForFile(this, "com.mydomain.fileprovider", newFile);
还必须包括:
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.setData(contentUri);
我真的不明白为什么我必须从 File 更改为 Content,但在此之后,文件现在又被附加了!如果您遇到此问题,请查看链接,并且不要忘记需要创建的新 .xml。
推荐阅读
- python-3.x - 使用来自另一个 Dataframe 的计数对 Dataframe 进行排序
- c# - 在 C# 中通过继承捕获异常
- python - 用 NaN 连接 pandas 中的两列
- database - 由于 GridDB 的 TIME SERIES 类型容器中 TIMESTAMP 字段的大小/定义可能导致记录冲突
- html - 使用css滚动无法自动工作
- android - 在来自数据库的字符串中添加小时
- c# - 使用 XmlWriter 的带有命名空间的 XML
- html - 物化css滚动表头冻结不起作用
- python - 如何将某个组的值移动不同的数量
- state - 有没有办法在本体中定义对象属性的值或状态?