首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用MediaStore获取安卓内部存储和外部存储的所有音乐文件?

MediaStore是Android系统提供的一个多媒体数据库,用于管理设备上的音频、视频和图像文件。通过MediaStore,我们可以获取安卓设备内部存储和外部存储中的所有音乐文件。

要使用MediaStore获取安卓内部存储和外部存储的所有音乐文件,可以按照以下步骤进行:

  1. 添加权限:在AndroidManifest.xml文件中添加以下权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />这个权限是用于读取外部存储的音乐文件。
  2. 查询音乐文件:使用ContentResolver对象查询MediaStore.Audio.Media.EXTERNAL_CONTENT_URI和MediaStore.Audio.Media.INTERNAL_CONTENT_URI两个URI,分别表示外部存储和内部存储中的音乐文件。可以使用以下代码进行查询:ContentResolver contentResolver = getContentResolver(); Uri externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Uri internalUri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI; String[] projection = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA}; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor externalCursor = contentResolver.query(externalUri, projection, selection, null, sortOrder); Cursor internalCursor = contentResolver.query(internalUri, projection, selection, null, sortOrder);以上代码中,projection参数指定了需要查询的字段,selection参数用于过滤非音乐文件,sortOrder参数用于按照音乐标题进行升序排序。
  3. 遍历Cursor获取音乐文件信息:通过遍历Cursor对象,可以获取每个音乐文件的ID、标题和路径等信息。可以使用以下代码进行遍历:if (externalCursor != null && externalCursor.moveToFirst()) { do { long id = externalCursor.getLong(externalCursor.getColumnIndex(MediaStore.Audio.Media._ID)); String title = externalCursor.getString(externalCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); String path = externalCursor.getString(externalCursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 处理音乐文件信息 } while (externalCursor.moveToNext()); } if (internalCursor != null && internalCursor.moveToFirst()) { do { long id = internalCursor.getLong(internalCursor.getColumnIndex(MediaStore.Audio.Media._ID)); String title = internalCursor.getString(internalCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); String path = internalCursor.getString(internalCursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 处理音乐文件信息 } while (internalCursor.moveToNext()); }在以上代码中,可以根据需要获取音乐文件的ID、标题和路径等信息,并进行相应的处理。

需要注意的是,获取音乐文件的路径可能是一个Content URI,需要根据具体情况进行处理,例如使用ContentResolver.openFileDescriptor()方法打开文件。

推荐的腾讯云相关产品:腾讯云对象存储(COS)可以用于存储和管理音乐文件。您可以通过访问腾讯云对象存储官方网站(https://cloud.tencent.com/product/cos)了解更多关于该产品的信息和使用方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用 VMware 安装虚拟机,如何配置虚拟机网络存储

在进行应用程序开发时,我们经常需要测试不同版本系统以及针对不同屏幕尺寸分辨率进行调试。为了方便测试调试,可以使用 VMware 虚拟机来运行模拟器。...本文将介绍如何使用 VMware 安装虚拟机,以及如何配置虚拟机网络存储。下载镜像文件首先,我们需要下载适合 VMware 镜像文件。...重新启动虚拟机后,它就可以使用与主机相同网络连接,可以直接访问互联网其他设备。配置存储默认情况下,虚拟机存储空间是有限。如果需要进行大量数据存储或备份操作,则需要扩展虚拟机存储空间。...步骤 4:分区格式化新磁盘完成添加新磁盘后,需要在系统中对它进行分区格式化操作。打开虚拟机,并在终端中运行以下命令:fdisk -l此命令将列出所有可用磁盘。...总结本文介绍了如何使用 VMware 安装虚拟机,并详细介绍了如何配置虚拟机网络存储空间。通过这些步骤,你可以轻松地在自己电脑上运行模拟器,方便进行开发测试工作。

6.1K00

AndroidQ分区存储权限变更及适配实现

音乐文件存储MediaStore.Audio 中。...以上方式不建议使用。 官方警告:明年,所有应用主要平台版本都需要分区存储,无论其采用哪种目标 SDK 级别。...) MediaStore 否 下载内容(文档电子书籍) 无 存储访问框架(加载系统文件选择器 否 您可以使用存储访问框架访问上表中显示每个位置,而无需请求任何权限。...特定文件访问适配 分享媒体文件 如果你应用有分享照片视频需求。请使用 MediaStore存储需要共享文件。...访问修改媒体内容 上面已经介绍过了不再重复,需要使用MediaStore 更新其他应用媒体文件 Android Q以前应用都不太关注其它用户组访问应用目录权限,适配Android Q后你会接到厂商要求你限定用户组访问存储目录权限问题单

1.5K31

开发之数据共享

一、数据共享作用 当我们需要把应用程序数据共享给其他应用程序(当然有的可能会混淆SharedPreferences)这个时候需要用到开发中另外一个组件(ContentProvider),这样组件是不论程序是否启动...提供不同访问来请求指定数据 三、如何提供ContentProvider 1、定义一个ContentProvider继承ContentProvider 2、在AndroidManifest.xml文件注册...(需要android:anthorities属性) 四、使用ContentProvider 1、介绍Uri 1.1、访问Uri比如:content://study.provider/book(这里...对象,根据需求调用不同操作数据方法即可 五、常见内部ContentProvider ContactsContract.Contacts.CONTENT_URI管理联系人 MediaStore.Audio.Media.INTERNAL_CONTENT_URI...手机内音频文件 MediaStore.Images.Media.EXTERNAL_CONTENT_URI存储SD中图片 六、监听ContentProvider数据改变 我们需要监控到ContentProvider

1.5K60

解决android6.0以上不能读取外部存储权限问题

通过内容提供者获取手机sdcard本地视频时, /** * 从本地sdcard得到数据 * //1.遍历sdcard,后缀名 * //2.从内容提供者里面获取视频 * //3.如果是6.0...,//视频总时长 MediaStore.Video.Media.SIZE,//视频文件大小 MediaStore.Video.Media.DATA,//视频绝对地址...); } //Handler发消息 handler.sendEmptyMessage(10); } }.start(); } /** * 解决...6.0以上版本不能读取外部存储权限问题 * @param activity * @return */ public static boolean isGrantExternalRW(Activity...Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1); return false; } return true; } 以上这篇解决android6.0以上不能读取外部存储权限问题就是小编分享给大家全部内容了

1.5K20

Android Q 适配 之 存储新特性

而作为开发者,我们更关心如何解决在我们现有的 App 上,保证 Android Q 兼容性问题。...背景说明 本文档是基于谷歌 Q beta4 版本变更输出兼容性整改指导,如果后续 beta 版本有新变更特性,我们也会刷新文档相关章节内容,请开发者持续关注。 2....Android Q 仍然使用 READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE 作为面向用户存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制...Android Q 除了划分外部存储定义 Filtered View,还在查询、读写文件一些细节上做了改进或限制,例如图片文件中地理位置信息将不再默认提供、查询 MediaProvider 获得...问题原因 2:使用 MediaStore 接口获取公共目录多媒体文件 Uri 后,直接使用该 Uri 打开 OutputStream 或文件描述符。

1K30

Android 11 中存储机制更新

目标 API 级别 (Target SDK Level) 设定为 Android 10 应用无需请求 Storage 权限,就可以使用自己外部存储目录并管理媒体集合 (音频、视频、图片下载数据)。...Android 10 对外部存储权限行为 developer.android.google.cn/training/da… 改进媒体存储 Android 10 中要求所有应用都使用 MediaStore...API 来访问照片、视频音乐文件,我们也将继续秉承这个原则。...但是获得这个权限应用还是无法访问其他应用应用专属目录 (app-specific directory),无论是外部存储还是内部存储。 我们希望继续允许一些确实有广泛访问外部存储文件需求应用。...也请继续关注谷歌开发者公众号未来发布、基于 MediaStore Storage Access Framework API 来调用分区存储相关文章。 ?

2.9K11

Android中Image简单实例详解

在多媒体应用中,Image是最基础功能模块,接下来我们将看看在Android中是如何获取存储Image。...二、Image存储,Android系统中含有一个多媒体库,其中包括所有Image、Video、Audio数据。通过MediaStore对象可以访问相关数据。...,另一个是INTERNAL_CONTENT_URI * 第一个URI对应着外部设备(SDCard),第二个URI对应着系统设备内部存储位置。...* 对于多媒体文件,一般比较大,我们选择外部存储方式 * 通过使用ContentResolver对象insert方法我们可以向MediaStore中插入一条数据 * 这样在检索那张图片时候,不再使用文件路径...outHeight就有值了 //由于使用MediaStore存储,这里根据URI获取输入流形式 Bitmap pic = BitmapFactory.decodeStream(this .getContentResolver

1.7K10

好好管理你应用文件夹,别再乱用了

碎片化问题,由来已久,这次来看一下文件储存碎片化问题。到底要怎么去正确选择管理文件存储呢? 1 为什么要管理文件?...我把应用操作文件存储位置分为三个部分: 应用内部存储私有文件目录 应用外部存储私有文件目录 公有目录 我们有两种api去获取这三个部分存储位置,它们分别归属于ContextEnvironment。...3.1 应用私有文件目录 应用私有目录由Context获取控制,分为内部存储外部存储内部存储不需要申请文件读写权限也能够使用外部存储需要权限(getetExternalCacheDir() getExternalFilesDir...用户对app进行数据清理或卸载可以清理外部存储内部存储所有文件目录。 3.2 内部存储 内部存储文件夹其他应用用户无法直接访问,可以用于存放敏感数据。...这个是在Android 5.0加入api,创建和获取位于/sdcard/Android/media目录下应用目录,该目录下文件能够被其他应用访问MediaStore查询获取

1.3K10

【权限问题专项】存储权限合理使用场景VS不合理使用场景说明

下图为《绿标5.0安全标准》对于存储权限要求: 申请外部存储权限几乎成为了应用标配,但也不是所有的应用都真正意义上需要这个权限,应用应基于自身业务功能场景,以权限申请最小化为原则去申请授权。...首先,我们先对存储目录做个简单介绍。存储分为内部存储外部存储、系统存储外部存储又分为私有目录存储、公有目录存储。...获取外部存储共享文件夹路径有九种type,分别对应不同目录,如下: 1.DIRECTORY_MUSIC:音乐类型 2.DIRECTORY_PICTURES:图片类型 3.DIRECTORY_MOVIES...下表总结了几种保存应用数据选项(援引自上述官网): 一、读、写外部存储权限合理使用场景 1.影音娱乐、便捷生活类等:a.将应用中音频、视频、图片、文件存储到本地,或者对本地相册中图片、视频编辑进行二次创作.../emulated/0/Android/data/packagename(包名),无需申请READ_EXTERNAL_STORAGE权限WRITE_EXTERNAL_STORAGE权限; 5.10

94720

3-AIV--使用ContentProvider获得所有图片路径

零、前言 [1].顾名思义,内容提供者,目的:实现跨进程间数据共享 [2].基于数据库提供数据 [3].如电话簿,短信,歌曲信息都是以数据库存储存储,都可以通过ContentProvider获取...[4].如果只是想使用的人,直接把静态方法拷贝即可,想知道原理,图片注释认真看一下,也可以自己分析一下联系人表。...", name='" + name + '\'' + ", count=" + count + '}'; } 2.获得所有图片路径封装方法...= null) { //根据父文件夹,过滤出所有以jpg,png,jpeg结尾文件数量 int imgCount = parentFile.list...图片.png 本文由张风捷特烈原创,转载请注明 更多技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http:/

1.5K20

2016级移动应用开发在线测试14-MediaPlayer

在日常开发中,我们经常会使用MediaStore获取手机音频、图片、视频等相关信息。...MediaStore类包含四个内部类,分别是:MediaStore.Audio(存放音频信息),MediaStore.Files(存放文件信息,包含非媒体文件,如txt,PDF),MediaStore.Image...(存放图片信息),MediaStore.Video(存放视频信息)┋ 当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡手机内存上多媒体文件,如声音、图片、视频等,将相应信息放入到定义好数据库中...┋ 在程序中,并不需要关心如何去扫描手机系统中文件,只要通过ContentProvider提供查询接口,我们便可以得到各种手机上多媒体信息。...┋ 获取所有外部存储卡上音乐文件信息方法: Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null

81830

从TargetApi22升级到TargetApi26注意事项

: 1)但是会在重要系统窗口(如状态栏、IME)之下 2)系统可以调整这种形式窗口位置、大小可见性 3)运行在api26手机上,只要应用使用[TYPE_APPLICATION_OVERLAY...不再按文件名分享私人存储文件。...5.使用用户账户信息 在8.0中,应用只能使用authenticator拥有的账户信息或者用户授权账户信息。...8.0废弃了LOGIN_ACCOUNTS_CHANGED_ACTION,应该应该使用addOnAccountsUpdatedListener()来获取运行时账户变化。...6.权限组调整 8.0之前,如果应用在运行时申请一个权限,并且用户授予了这个权限,那么系统会错误将这个权限所属权限组里并且在manifest里注册过权限都授予这个应用。

79210

AndroidQ兼容性适配指南

访问共享外部存储文件应用 使用特定于应用目录媒体集合目录 了解详情 ✅ 增强了用户对位置权限控制力 仅限前台权限,可让用户更好地控制应用对设备位置信息访问权限 在后台时请求访问用户位置信息应用...Android Q仍然使用READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE作为面向用户存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制。...在AndroidQ上,所有外部存储设备都会被命令,即Volume Name。MediaStore可以通过Volume Name 获取对应Uri。...借助 SAF,用户可轻松在其所有首选文档存储提供程序中浏览并打开文档、图像及其他文件。用户可通过易用标准界面,以统一方式在所有应用提供程序中浏览文件,以及访问最近使用文件。...让用户主动授权方式 获取,获得用户主动授权之后,应用就可以临时获得该目录下面的所有文件目录读写权限,可以通过DocumentFile操作目录其下文件。

7K30

干货 | 携程Android 10适配踩坑指南

要点: Android Q文件存储机制修改成了沙盒模式 APP只能访问自己目录下文件公共媒体文件 Android Q版本以下机型,还是使用文件存储方式 Android Q及以上版本机型,所有应用均需要分区存储..., 所以应用需要提前确保支持分区存储 需要注意:在适配AndroidQ时候还要兼容Q系统版本以下使用SDK_VERSION区分 2.2 新特性概览 2.2.1 外部存储 外部存储被分为应用私有目录以及共享目录两个部分...: 应用私有目录:存储应用私有数据,外部存储应用私有目录对应Android/data/packagename,内部存储应用私有目录对应data/data/packagename; 共享目录:存储其他应用可访问文件...Android版本差异概览 存储位置路径版本存储权限 内部存储data/data/packagename所有 否getFilesDir()、getCacheDir() 外部存储 私有目录...(即从Android 10开始,普通应用已经无法获取设备真正mac地址,标识设备已经无法使用mac地址) 3.3 如何标识设备唯一性 3.3.1 Google解决方案:如果您应用有追踪非登录用户需求

3.2K77

Android开发中,你能控制什么?

但是在开发应用时,我们可能就感觉没有那么“爽”了,没有那种掌控一切感觉。所以,开发中,你能控制什么? Android提供了很多特性,用来辅助开发。...存储提供了几种存储方式,比如数据库SQLite,我们可以用他存储很多本地数据,一些单机小游戏很多数据就是存储在SQLite中。还有本地文件存储外部存储,这两种存储方式一般都是储存文件。...内部存储通常用于保存当前应用私有文件,不允许外部应用访问到这些文件。相对外部存储则是存储公开文件。 网络:Android设备通常都具备上网功能,接入网络方式多种多样。...多媒体:设备具有播放录制多媒体(图片,视频,音频)文件功能。虽然具体实现方式因设备而异,可能非常容易爆炸三星移动烤肉机小米调用方式不同,但是他们都会提供API供移动开发者使用。...所以,开发时候,我们可以在程序中拨打电话,发送接收消息等。 以上这些就是我们在开发应用程序时,能够掌控部分。应用不必电脑端程序,很多功能我们都需要受限于系统以及不同设备。

42220

Android应用中是怎么调用系统相册中照片

使用步骤 这里我是通过一个简单demo来讲解怎么去实现这个功能。...我们知道在4.4以后是不能把文件真实路径直接给别的应用,所以返回uri是经过封装,所以我们要进行解析取出里面的路径。...所以这里我们要进行判断版本来进行不同逻辑,先看代码: @Override protected void onActivityResult(int requestCode, int resultCode...然后通过这个Cursor对象MediaStore.Images.Media.DATA这个参数就可以获取到真实路径了。...第二种通过ContentUris.withAppendedId这个方法即可获取到content类型uri,这个方法负责把idcontentUri连接成一个新Uri。这个方法在这里也不详细讲解。

2.4K20

Android应用中是怎么调用系统相册中照片

使用步骤 这里我是通过一个简单demo来讲解怎么去实现这个功能。...我们知道在4.4以后是不能把文件真实路径直接给别的应用,所以返回uri是经过封装,所以我们要进行解析取出里面的路径。...所以这里我们要进行判断版本来进行不同逻辑,先看代码: @Override protected void onActivityResult(int requestCode, int resultCode...然后通过这个Cursor对象MediaStore.Images.Media.DATA这个参数就可以获取到真实路径了。...第二种通过ContentUris.withAppendedId这个方法即可获取到content类型uri,这个方法负责把idcontentUri连接成一个新Uri。这个方法在这里也不详细讲解。

86020

Android 10(Q)11(R) 分区存储适配

Android 存储分区情况 Android 中存储可以分为两大类:私有存储共享存储 私有存储 (Private Storage) : 每个应用在都拥有自己私有目录,其它应用看不到,彼此也无法访问到该目录...: 内部存储私有目录 (/data/data/packageName); 外部存储私有目录 (/sdcard/Android/data/packageName), 共享存储 (Shared Storage...使用直接文件路径原生库访问文件 为了帮助您应用更顺畅地使用第三方媒体库,Android 11 允许您使用MediaStore API 之外 API 访问共享存储空间中媒体文件。...按文件路径顺序读取时候性能相当;随机读取写入时候则会更慢,所以还是推荐直接使用 MediaStore API。 3....所以虽然明年才会强制执行分区存储,但还是建议尽早理解 review 项目中需要适配代码。

2.3K30

开发_数据存储技术_外部存储

外部存储,即将数据存储在sdcard中,当然存储前提是手机或者模拟器先具有sdcard目录 然而上一句话还是有歧义。...事实上所有设备都有外部存储内部存储,这两个名称来源于早期设备,那个时候设备内部存储确实是固定,而外部存储确实是可以像U盘一样移动。...但是在后来设备中,很多中高端机器都将自己机身存储扩展到了8G以上,他们将存储在概念上分成了"内部internal" "外部external" 两部分,但其实都在手机内部。...所以不管手机是否有可移动sdcard,他们总是有外部存储内部存储。最关键是,我们都是通过相同api来访问可移动sdcard或者手机自带存储外部存储)。..._数据存储技术_内部存储 开发_数据存储技术_SharedPreferences类 开发_数据存储技术_sqlite

1.9K80
领券