Android开发04_ContentProvider内容提供者
来源:互联网 发布:淘宝怎么寄售游戏币 编辑:程序博客网 时间:2024/06/06 09:22
一、概述
ContentProvider译为内容提供者,是Android四大组件之一,其余三大组件分别为:Activity(活动)、Broadcast Receiver(广播接收器)和Service(服务)。
ContentProvider主要用做个程序之间的访问,通过Uri(唯一资源标识符)来存储或者提供资源以供其他程序使用。
二、自定义ContentProvider
1、自定义MyContentProvider继承ContentProvider
2、重写6个方法,其中关于getType理解是:根据给定的Uri返回一个MIME类型的数据,如果是单条数据,那么我们的MIME类型应该以vnd.android.cursor.item开头,如果是多条数据,我们的MIME类型的数据应该以vnd.android.cursor.dir开头。
3、在manifests中注册
三、使用别人定义好的ContentProvider
1、查询和添加手机联系人
<!-- 读取联系人权限 --><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" />
Uri uri = ContactsContract.Contacts.CONTENT_URI;//获取联系人Uri
//获取电话号码Cursor phonesCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " =?", new String[]{id}, null);
2、添加联系人
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");//添加联系人Uri
long contactId = ContentUris.parseId(resolver.insert(uri, values));/* 往 data 中添加数据(要根据前面获取的id号) */// 添加姓名uri = Uri.parse("content://com.android.contacts/data");values.put("raw_contact_id", contactId);values.put("mimetype", "vnd.android.cursor.item/name");values.put("data2", "小月");resolver.insert(uri, values);// 添加电话values.clear();values.put("raw_contact_id", contactId);values.put("mimetype", "vnd.android.cursor.item/phone_v2");values.put("data2", "2");values.put("data1", "10086");resolver.insert(uri, values);
3、获取音频(自定义BaseAdapter泛型适配器)
<!--获取音频资源--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//查询音乐Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
//歌曲IDint musicId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));//歌曲名字String musicName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));//歌手String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//专辑IDint albumId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));//歌曲标题String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));//专辑String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));//大小long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));//时间long time = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));//地址String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
获取专辑封面:工具类
1 0
- Android开发04_ContentProvider内容提供者
- Android开发_ContentProvider
- Android开发之内容提供者
- Android开发之内容提供者
- Android 开发之 ContentProvider 内容提供者
- 【Android 开发】:Content Provider (内容提供者) 详解
- Android开发--内容提供者(Content provider)
- android 开发内容提供者详解(1)
- Android开发之内容提供者ContentProvider
- android开发 - Content Provider 内容提供者
- Android-应用开发-内容提供者(十)
- 【Android 开发】:Content Provider (内容提供者) 详解
- android基础--内容提供者
- Android ContentProvider(内容提供者)
- Android 内容提供者
- android内容提供者ContentProvider
- android---内容提供者
- Android--- ContentProvider(内容提供者)
- 熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
- 在VS中配置opencv库
- 排序
- Linux下用breakpad抓取C++程序崩溃报告
- Git 常用命令(持续补充中...)
- Android开发04_ContentProvider内容提供者
- Write code that is easy to delete, not easy to extend.
- Android百度地图开发(一)之Hello BaiduMap
- 排序算法(三) - 交换排序
- scala程序写Spark程序实现黑名单过滤
- LeetCode 437 Path Sum III
- java 一键部署war包,jar包
- CentOS 7 + Apache 2.4 + Flask 0.11 + Python 3.4 + Virtualenv配置过程
- Android系统init.rc分析