android - 如何打开外部音乐播放器(例如 Pulsar、Retro Music Players)并播放我从列表视图中选择的歌曲?
问题描述
我在 listview 中有来自内部存储的歌曲列表,现在 onItemClickListener 我添加了以下代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(FileProvider.getUriForFile(parent.getContext(), BuildConfig.APPLICATION_ID + ".provider", file), "audio/*");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
MainActivity.this.startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Toast.makeText(parent.getContext(),"Music player not found", Toast.LENGTH_SHORT).show();
}
它只是打开音乐播放器,不播放所选项目(歌曲)。现在,我该怎么做才能播放歌曲?
解决方案
最后,我发现了我的错误,
我不得不使用
intent.setDataAndType(Uri.fromFile(file), "audio/*");
代替
intent.setDataAndType(FileProvider.getUriForFile(parent.getContext(), BuildConfig.APPLICATION_ID + ".provider", file), "audio/*");
因为“Fileprovider”仅用于从您的应用安装 apk。
推荐阅读
- elasticsearch - elasticsearch理解线程池
- ios - iOS:创建许多 IBOutlets 有性能开销吗?
- python - pyopencl 输出的值错误
- javascript - 强制更改字符串遵守 Typescript 类型联合
- c++ - 如何调试“ISO C++ 禁止指针和整数之间的比较”
- oracle - 如何在 PostgreSQL 中为用户创建同义词
- python - Discord bot 无法使用线程,卡住错误:必需的位置参数:'ctx'
- openstack - 在 Openstack 中使用 Heat 配置网络 MTU
- python-3.x - 使用 google drive 安装 google collab
- javascript - 当对象在多个其他对象中时,console.log 返回 [Object]