gpt4 book ai didi

java - 是否可以对 Android 的媒体元 sqlite 数据库进行原始查询?

转载 作者:IT王子 更新时间:2023-10-29 06:24:24 28 4
gpt4 key购买 nike

我正在编写一个播放音乐的小应用程序。我的目标是 Android API 级别 7 及更高级别。

该应用程序应仅列出和播放已标记有用户通过首选项选择的一组特定流派的音乐,例如“流行”、“摇滚”、“乡巴佬”。

现在我正在尝试找到一种有效的方法来查找所有专辑 ID 和专辑名称,这些专辑包含带有所选流派标签的轨道。

这在 SQL 中很容易。手机将媒体元数据存储在 sqlite 数据库中。我在手机的内存中找到了它,通过 adb 复制了它并尝试了一些 sqlite 查询。生成的查询是一个带有连接链的单行 SQL,它工作正常。

在使用 Android SDK 的 Java 中,这似乎更加困难,至少对于 API 级别 7 及更高级别。我可以在 MediaStore 上使用 managedQuery 在同一底层数据库上执行一些有限的 SQL 语法,但如果我理解正确,则在使用此 API 时没有 JOIN 和 DISTINCT。

此外,我可能忽略了这一点,但 MediaStore 允许我在单个查询中搜索一个 流派的所有轨道,但不能搜索多个流派的所有轨道。

所以这一切都需要在 Java 中进行一些手动工作。该程序现在必须为每种类型执行多个 managedQuery() 调用,并且该程序必须加入结果并使它们与 sqlite(这项工作所属的地方)之外的 java 区分开来。

真的必须这样做吗?有没有办法只向 sqlite 数据库文件发送原始查询?

谢谢!

最佳答案

不,你不能直接访问数据库的底层结构——事实上你无法知道数据库的实际结构,它已经跨平台版本发生了变化。您唯一可以直接查询的是通过内容提供商的 MediaStore 协议(protocol)提供的查询。

关于java - 是否可以对 Android 的媒体元 sqlite 数据库进行原始查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506925/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com