我们经常需要获取手机信息,例如我们想做一个音乐播放器,我们需要拿到本地的音频信息,这样一来,我们就需要考虑如何拿到这些数据了
1,一个神秘的apk

这个叫做MediaProvider.apk是干什么的呢,和我们今天讲的东西有啥关联吗,其实这是一个正在运行的apk,这个apk是没有界面的,因此我们是看不见的,他的作用就是在后台默默的为我们收集相关的数据信息。,然后保存在数据库里面


从上面的截图上看,这个apk把我们收集内的媒体信息都存储在数据库中了,那么接下来我们只需要读取数据库,拿到相关的资源即可了。
2,获取资源之 子线程+handler方式
这里获取资源,我给大家提供三种方式
- 子线程+handler
- 自带的异步任务AsyncTask
- AsyncQueryHandler
子线程+handler:
这个首先是创建子线程:
//这个是android中的内容提供者,上面所说的三种方式都需要用到这个,主要提供android手机的内的基本数据信息
val resolver = context?.contentResolver
Thread(
object:Runable{
override fun run(){
var cursor = resolver?.query(
//这方法不懂请看下面的源码分析,看完我们再接着往下看
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
arrayOf(
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ARIST
), null ,null.null
)
//上面返回的是一个游标,我们定义一个处理游标的方法类,接着看下面的游标类
CursorUtil(cursor)
var msg = Message.obtain()
msg.obj = cursor
handler.setMessage(mgs)
//注意 handler创建我这里就不写了,注意最好使用防止内存泄漏的写法
}
}
).


1722

被折叠的 条评论
为什么被折叠?



