学习Android的朋友欢迎加入:群 59324839(QQ)
使用步骤:
1:实现ContentProvider类
2:重写物业需要的方法
3:minifest.xml配置:<provider android:name=”你的类名地址(与Activity一样)” android:author=”让其他程序访问的Uri地址”></provider>
继承ContentProvider实现insert update delete etc方法的Uri都表示一个数据
那么要让其他程序访问这个应用数据;我们就要用到Uri对象;然后我们就来操作Uri对象
首先我们要匹配Uri:
使用:UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); // UriMatcher.NO_MATCH标示不匹配任何路径的返回码,
2: sMatcher.addURI(“org.zhou.demo”,”person”,1);//其中包含三个参数
[1]:匹配的Uri地址
[2]:访问的路径
[3]:Uri与路径都相同了后,返回的一个匹配状态吗
3:为一个Uri添加指定的行数(如:数据库新加的一个列,返回rowNum为102;那么在之前的Uri再加上这个数字102)
Uri uri = ContentUris.withAppendId(agoUri,rowid);
4:关于类型的引用;getType();---继承与ContentProvider
如:一个Uri代表的数据为集合形式那么,应该以:vnd.android.cursor.dir/开头
一个Uri代表的数据为单个形式那么,应该以:vnd.android.cursor.item/开头
5:在ContentProvider以外的程序调用须使用:ContentResolver对象,同时它提供与ContentProvider想同的方法
Uri insertUri = Uri.parse(“content://org.zhou.demo/person”);//person就为路径
ContentResolver.insert(insertUri, values)
数据变化的通知
1:在ContentProvider插入中的this.getContent().getContentResolver().notifyChange(uri,null);
2:在CotentResolver()中进行监听,
//insertUri为前面(即:ContentProvider insert操作中)定义的
ContentResolver.registerContentObserver(insertUri,true, new PersonObserver(new Handler()));
//这个的personObserver非常重要的
Class personObserver entends ContentObserver{
Public PersonObserver(Handler handler){
}
Public void onChange(Boolean selfChange){
//这里就是在接收到数据改变要处理的函数
}
}
6:联系人的使用:
Uri uri = ContactsContract.Contacts.CONTENT_URI;
Contact中的ContentProvider
调用Uri:--à>>uri = ContactsContract.contact.CONTENT_URI;
其中使用到得参数:
ContactID:ContactsContracts.Contacts._ID;
Contact姓名:ContactsContracts.Contacts.DISPLAY_NAME;
调用电话Uri-à>>ContactContracts.CommonDataKinds.Phone.CONTENT_URI;
其中使用到得参数:
PhoneContact编号:ContactContract.CommonDataKinds.Phone.CONTACT_ID
Contact中电话号码:ContactContract.CommonDataKinds.Phone.NUMBER;
调用Email
其中使用到得参数:
Email中Contact编号ContactContract.CommonDataKinds.Email.CONTACT_ID;;
Email中的邮箱内容:ContactContract.CommonDataKinds.Email.DATA;
联系人添加操作:
//批量添加,处于同一个事务中
public void testSave() throws Throwable{
//文档位置:reference\android\provider\ContactsContract.RawContacts.html
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex = ops.size();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME, null)
.build());
//文档位置:reference\android\provider\ContactsContract.Data.html
ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.GIVEN_NAME, "赵薇")
.build());
ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, "13671323809")
.withValue(Phone.TYPE, Phone.TYPE_MOBILE)
.withValue(Phone.LABEL, "手机号")
.build());
ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
.withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
.withValue(Email.DATA, "liming@itcast.cn")
.withValue(Email.TYPE, Email.TYPE_WORK)
.build());
ContentProviderResult[] results = this.getContext().getContentResolver()
.applyBatch(ContactsContract.AUTHORITY, ops);
for(ContentProviderResult result : results){
Log.i(TAG, result.uri.toString());
}
}
发表评论
-
Android临时数据缓存方法
2011-07-22 22:58 2011学习Android的朋友欢迎加入:群 59324839(QQ) ... -
android网络
2011-07-22 22:57 1098学习Android的朋友欢迎加入:群 59324839(Q ... -
SQLite数据库
2011-07-22 22:55 874学习Android的朋友欢迎加入:群 59324839(QQ) ... -
Android Xml解析
2011-07-22 22:53 958学习Android的朋友欢迎加入:群 59324839(Q ... -
Android SharedPreferences
2011-07-22 22:53 1076学习Android的朋友欢迎加入:群 59324839(Q ... -
Android XMl写入
2011-07-22 22:51 1160学习Android的朋友欢迎加入:群 59324839(Q ... -
Android 权限配置
2011-07-22 22:51 1475学习Android的朋友欢迎加入:群 59324839(Q ... -
Android 文件操作
2011-07-22 22:45 946学习Android的朋友欢迎加入:群 59324839(QQ) ... -
Android Dialog的使用
2011-07-22 22:44 1049学习Android的朋友欢迎加入:群 59324839(QQ) ... -
android 技术讨论群(QQ)
2011-07-04 22:18 412android 学习群; 可供广大群从参加! 初学者欢 ... -
SQL判断一个表在系统中是否存在
2011-07-03 18:49 1606/** * 判断某张表是否存在 * @ ... -
android 对话框应用
2011-06-28 00:21 927啥都别说了,看效果吧! new AlertDialog ... -
ContentProvider
2011-06-27 21:13 3501在 Android中,对于数据的存贮,有几种方式,有文件方式 ... -
android 权限大全
2011-06-14 00:19 925java.net.SocketException: Perm ... -
android GUI线程安全
2011-06-11 18:28 1316Activity:运行于主线程。因Android的GUI是 ... -
android Intent和菜单的使用
2011-06-11 01:55 903首先我们需要知道Intent这个东西是用来干什么的: ... -
android 下载程序
2011-06-10 00:34 1075HttpDownloader 文件: package zho ... -
android SQLite使用
2011-06-10 00:33 1443package zhou.demo.sql; impor ... -
android Handler and progress
2011-06-10 00:31 834package zhou.demo; import andr ... -
android Handler使用
2011-06-10 00:31 926package zhou.demo; import andr ...
相关推荐
在这个“ContentProvider 内容提供者完整代码”压缩包中,我们可以深入理解ContentProvider的工作原理以及如何实现它。 首先,我们来详细解释ContentProvider的基本概念。ContentProvider是一个抽象类,需要我们...
3. **操作方法**: ContentProvider提供了一组标准的CRUD(创建、读取、更新、删除)方法:`insert()`, `query()`, `update()`, `delete()`,用于对数据进行操作。 二、ContentProvider的实现步骤 1. **定义...
然而,ContentProvider为其他应用程序提供了安全访问这些私有数据的途径,使得数据共享变得可能。 ContentProvider的工作原理基于URI(统一资源标识符)和Cursor,它将数据模型与UI(用户界面)解耦。当一个应用想...
3. 更新数据:通过ContentResolver调用update()方法,传入URI、ContentValues更新内容和选择器,ContentProvider更新对应数据并返回受影响的行数。 4. 删除数据:通过ContentResolver调用delete()方法,传入URI和...
在Android系统中,内容提供者(Content Provider)是四大组件之一,它负责在应用程序之间共享数据。内容提供者是一个接口,使得其他应用可以访问存储在特定应用中的私有数据,甚至是系统级别的数据。通过实现内容...
在Android系统中,内容提供者(ContentProvider)是四大组件之一,它扮演着数据共享与交换的关键角色。ContentProvider使得应用程序之间可以安全地共享数据,无论是应用内的数据,还是跨应用的数据。它遵循统一的URI...
通过这个项目,你可以学习到如何设计和实现一个功能完备的内容提供者,从而使得其他应用可以安全地读取和修改你的应用数据。 总之,ContentProvider是Android框架中不可或缺的一部分,它使得数据共享成为可能,促进...
在Android开发中,内容提供者(ContentProvider)是四大组件之一,它负责在应用程序之间共享数据。本实例将深入解析如何创建和使用一个简单的ContentProvider,同时涉及与数据库的操作。 一、ContentProvider基础 ...
- 实现内容提供者通常需要创建一个ContentProvider类,继承自android.content.ContentProvider,实现insert、query、delete、update等方法,根据业务逻辑处理数据操作。 - 消费者应用通过ContentResolver发起查询...
在Android开发中,内容提供者(Content Provider)和内容观察者(Content Observer)是两个非常重要的组件,它们在数据共享和实时数据更新方面扮演着关键角色。本篇将深入探讨这两个概念及其在“手机卫士”这样的...
总结起来,Android的内容提供者ContentProvider是实现应用间数据共享的重要工具。通过创建和注册ContentProvider,开发者可以将自己的数据暴露给其他应用,同时也可以访问其他应用公开的数据。通过ContentObserver,...
在Android开发中,内容提供者(Content Provider)是Android四大组件之一,它是应用程序间数据共享的重要机制。通过自定义内容提供者,开发者可以将自己的数据结构公开给其他应用,实现跨应用的数据交换。本主题将...
本篇文章将深入探讨ContentProvider的工作原理、如何创建以及如何通过ContentProvider访问系统的内容提供者,特别是针对联系人数据的读取。 一、ContentProvider概述 ContentProvider作为一个标准化的数据接口,...
在Android系统中,内容提供者(Content Provider)是应用程序间数据共享的重要机制。它允许一个应用将自己的数据结构公开,让其他应用可以访问和操作这些数据,就像操作SQLite数据库一样。这篇博客“android之内容...
3. **内容提供者类(Content Provider Class)**:开发者需要继承`android.content.ContentProvider`并实现其抽象方法,以完成对数据的操作。 ### 二、内容提供者的注册 在AndroidManifest.xml文件中,我们需要...
2. **构造ContentResolver操作**:使用`ContentResolver`提供的方法,如`query()`、`insert()`、`update()`和`delete()`,并传入合适的URI、选择条件等参数。 3. **处理Cursor**:`query()`方法会返回一个Cursor...
内容提供者是一个实现了ContentProvider类的组件,它负责存储、检索以及更新应用程序的数据。每个内容提供者都有一个唯一的URI(统一资源标识符),通过这个URI,其他应用可以请求数据。 二、Android通讯录内容提供...
内容提供者是一种特殊的类,继承自`android.content.ContentProvider`,并实现了必要的方法来读写数据。它允许应用程序将自己的数据暴露给其他应用,同时也能够访问其他应用公开的数据。这种机制使得数据共享成为...
1. 创建内容提供者类:继承自ContentProvider,实现其抽象方法,如onCreate()、query()、insert()、delete()、update()等。 2. 注册内容提供者:在AndroidManifest.xml中声明内容提供者,指定对应的URI、类名及权限...