Skip to content

外部编辑接入 ​

播放器可通过 Intent 打开 Lyrico 的单曲编辑页,修改音频标签、歌词和封面。

1. 准备文件 ​

取得原始音频的 content:// URI(MediaStore、SAF 或 FileProvider),确保可读取并以 rw 模式打开可定位的文件描述符。自有 Provider 需支持 URI 授权及原文件读写。

2. 启动编辑 ​

从 Activity 调用,audioUri 为上一步取得的 URI:

kotlin
val intent = Intent("com.lonx.lyrico.action.EDIT_TAG").apply {
    setPackage("com.lonx.lyrico")
    setDataAndType(audioUri, "audio/*")
    clipData = ClipData.newRawUri("audio", audioUri)
    addFlags(
        Intent.FLAG_GRANT_READ_URI_PERMISSION or
            Intent.FLAG_GRANT_WRITE_URI_PERMISSION
    )
}
startActivity(intent)

未安装 Lyrico 时,捕获 ActivityNotFoundException 并提示安装。测试 Debug 版时,包名改为 com.lonx.lyrico.debug。

3. 返回后刷新 ​

用户点击“保存”后,Lyrico 写入文件并退出编辑页。播放器返回前台时,应重新读取本次编辑歌曲的标签、歌词和封面,并更新缓存。

如需获取保存结果,在 Activity 中注册回调,并将上面的 startActivity(intent) 改为 editLauncher.launch(intent):

kotlin
private val editLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        result.data?.data?.let { uri ->
            // 重新读取 uri 对应歌曲并刷新缓存
        }
    }
}

保存成功返回 RESULT_OK,Intent.data 为原始音频 URI;未保存退出返回 RESULT_CANCELED。保存失败会留在编辑页,允许重试。继续使用 startActivity() 的播放器无需调整,仍按返回前台的方式刷新。

接入后验证打开、保存、取消及返回刷新流程。如需加入 已适配列表,请提交 PR,注明播放器名称、链接和最低适配版本。