从 MediaStore 查询播放列表

2023-12-11

我正在尝试从 MediaStore 查询设备中的播放列表。我已经关注了之前提出的问题,但没有得到答案。

这就是我查询播放列表的方式

public void addToPlaylist(long playlistId, Context context,
                          ArrayList<Play> playlistTracks, String playlistName) {
    int count = getPlaylistSize(playlistId, context);
    Log.d("playlist size=", "" + count);

    ContentValues[] values = new ContentValues[playlistTracks.size()];
    for (int i = 0; i < playlistTracks.size(); i++) {
        values[i] = new ContentValues();
        values[i].put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, i
                      + count + 1);
        values[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID,
                      playlistTracks.get(i).getId());
        values[i].put(MediaStore.Audio.Playlists.NAME, playlistName);
    }
    ContentResolver resolver = context.getContentResolver();
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external",
                                                               playlistId);
    int num = resolver.bulkInsert(uri, values); 
    Log.d("songs added=", "" + num); // added
    resolver.notifyChange(Uri.parse("content://media"), null);

}

private int getPlaylistSize(long playlistId, Context context)
{
    // TODO: Implement this method
    return 0;
}
public void retrieveAllPlaylists(Context context) {

    Uri tempPlaylistURI = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;

    final String idKey = MediaStore.Audio.Playlists._ID;
    final String nameKey = MediaStore.Audio.Playlists.NAME;


    final String[] columns = { idKey, nameKey };

    Cursor playListCursor = context.getContentResolver().query(
        tempPlaylistURI, columns, null, null, null);

    if (playListCursor != null) {
        Log.d("playlist cursor count=", "" + playListCursor.getCount());

        for (boolean hasItem = playListCursor.moveToFirst(); hasItem; hasItem = playListCursor
        .moveToNext()) {
            playlistName = playListCursor.getString(playListCursor
                                                    .getColumnIndex(nameKey));
            // noOfTracks = playListCursor.getInt(playListCursor
            // .getColumnIndex(tracksCountKey));
            Log.d(this.getClass().getName(), "playlistname=" + playlistName // returns only default playliststhe
                  + "tracks=" + noOfTracks);
            playlistModel.add(new Play(playlistName, noOfTracks));
        }


    }

}

我得到的只是一个空白屏幕。请指导我


创建播放列表的简单方法是:

            public void addnewPlaylist(Context context, String newplaylist) {
    ContentResolver resolver = context.getContentResolver();
    ContentValues values = new ContentValues(1);
    values.put(MediaStore.Audio.Playlists.NAME, newplaylist);
    resolver.insert(uri, values);

}

然后填充播放列表:

    public void addTrackToPlaylist(Context context, String audio_id,
    long playlist_id, int pos) {
    Uri newuri = MediaStore.Audio.Playlists.Members.getContentUri(
            "external", playlist_id);
    ContentResolver resolver = context.getContentResolver();
    ContentValues values = new ContentValues();
        values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, pos);
        values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, audio_id);
        values.put(MediaStore.Audio.Playlists.Members.PLAYLIST_ID,
                playlist_id);
        resolver.insert(newuri, values);

}

查看您的代码,您没有构建正确的结构。播放列表不保存播放列表名称,仅保存 Playlist_id。

要返回所有播放列表:

        public Cursor getandroidPlaylistcursor(Context context) {
    ContentResolver resolver = context.getContentResolver();
    final String id = MediaStore.Audio.Playlists._ID;
    final String name = MediaStore.Audio.Playlists.NAME;
    final String[] columns = { id, name };
    final String criteria = null
    return  resolver.query(uri, columns, criteria, null,
            name + " ASC");

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MediaStore 查询播放列表 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 检测到设备正在振动?

    我使用下面的代码来振动设备 public void vibrator try Vibrator vibrator Vibrator getSystemService Context VIBRATOR SERVICE vibrator vib
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 防止控制器响应

    我正在使用 Spring Boot 来模拟我们的一项更复杂的服务 虽然所有标准情况都很容易完成 但有一个情况给我带来了一些麻烦 理论上 我正在模拟的应用程序有可能崩溃并关闭连接而不发送响应 我尝试了几种方法来在 Spring Boot 中实
  • 如何使用 PIL 保存图像?

    我刚刚使用 Python 图像库 PIL 完成了一些图像处理 使用我之前发现的一篇文章来执行图像的傅里叶变换 但我无法让保存功能正常工作 整个代码工作正常 但它只是不会保存结果图像 from PIL import Image import
  • 如何确定原始变量的原始类型?

    Java 中是否有类似 typeof 的函数返回原始数据类型 PDT 变量的类型或操作数 PDT 的表达式 instanceof似乎仅适用于类类型 请尝试以下操作 int i 20 float f 20 2f System out prin
  • 如何设置虚拟 GPIO 环回

    我目前正在开发一个应该在 Net 中使用 gpio 引脚的程序 我想在虚拟 GPIO 引脚上测试我的程序 但我不知道该怎么做 我想做一个环回 将虚拟 GPIO 1 连接到另一个虚拟 GPIO 2 我已经对串口和 tty0tty 做了类似的事
  • 类声明是红宝石中的洗眼剂吗?一切真的都是面向对象的吗?

    class Person def name puts Dave end end puts Person object id 访问方法只有两种方式 1 Someclass method 如果是类方法 where Someclass 是一个类
  • MySQL 在行组合中强制执行唯一约束

    我正在完善搜索自动建议系统 经过几次迭代和正常化 有以下一组表 数据库小提琴 https www db fiddle com f b1FvGDkBMQXkREaMh3pHKi 0 表格1 keywords 它存储字母数字 相关 关键字的列表
  • 默认类继承访问

    假设我有一个基类和派生类 class Base public virtual void Do class Derived Base public virtual void Do int main Derived sth sth Do cal
  • C# 4.0:我可以使用 TimeSpan 作为具有默认值的可选参数吗?

    这两个都会生成一个错误 指出它们必须是编译时常量 void Foo TimeSpan span TimeSpan FromSeconds 2 0 void Foo TimeSpan span new TimeSpan 2000 首先 有人可
  • Nifi PutSQL Timestamp/Datetime错误无法转换错误

    我尝试了建议的解决方案 通过使用 UpdateAttribute 处理器来消除时间戳格式转换错误 即 将JSON转换为SQL gt UpdateAttribute gt PutSQL 在 UpdateAttribute 中我使用了 Prop
  • 对 2D 列表使用 .strip()

    第一个问题 我想知道如何在二维列表中使用 strip 函数 以便在列表内每个列表的每个元素中 您可以删除字符串内无用的空格 这是我在 shell 中的尝试 gt gt gt questions 1986 Baby Shaw Welcome
  • 如何使用变量作为对象初始化程序中的键

    在我正在工作的应用程序中 服务器页面用于接收输入的名称作为其值的键 用ajax可以做到这一点吗 在此示例中 thisName 被视为文字字符串 table each function this delegate input focusout
  • 在 SymPy 中将 ** 替换为 Math.pow

    我有一个 Python 中的 SymPy 表达式 我想将其复制并粘贴到 Java 源代码中 问题是求幂有不同的表示法 Java用途Math pow a b Python使用a b 所以我的问题是 有没有办法以 Java 格式 打印 SymP
  • libgdx 中的背景透明度

    如果我在Android中使用libgdx 如何使屏幕背景透明 我尝试使用的代码不起作用 Gdx gl glClearColor 0 0 0 0 Gdx gl glClear GL10 GL COLOR BUFFER BIT GL10 GL
  • ActionError 未显示

    我想加载我的Error jsp in my ErrorDiv if Action类返回错误 我正在执行 AJAX 调用 JS success function result if result success alert Database
  • Facebook 分享,标题未分享

    转到以下网址 共享消息中未显示标题 我是否正确使用它或者它是 facebook api 中的错误 问候 潘卡伊 我很确定 Google 通过 JavaScript 更改了页面的 Title 属性 如果您查看其搜索结果页面的源代码 您会发现
  • MATLAB:频率分布

    我在一个文本文件中对 500 个数值 范围从 1 到 25000 进行了原始观察 我希望在 MATLAB 中进行频率分布 我确实尝试过直方图 hist 但是我更喜欢频率分布曲线而不是块和条形图 任何帮助表示赞赏 如果将两个输出参数传递给HI
  • 如何在 Symfony2 中设置表单字段的默认值?

    有没有一种简单的方法来设置文本表单字段的默认值 你可以设置默认值empty data builder gt add myField number empty data gt Default value
  • twilio python 模块版本 2.0.8 中缺少 twilio.rest?

    Twilio python 快速入门指南说使用名为 twilio rest 的子模块 但是今天通过安装 twilio 模块后sudo pip install twilio安装了版本 2 0 8 的 twilio 模块中似乎没有名为 rest
  • 如何以编程方式在 EditText 上设置焦点(并显示键盘)

    我有一个布局 其中包含一些如下视图
  • 从 MediaStore 查询播放列表

    我正在尝试从 MediaStore 查询设备中的播放列表 我已经关注了之前提出的问题 但没有得到答案 这就是我查询播放列表的方式 public void addToPlaylist long playlistId Context conte