Android四大组件之——ContentProvider(二)
Content Resolver介绍:
开发者文档中这么定义的:
This class provides applications access to the content model.
这个类为应用提供访问Content模型的功能。
Content Resolver是我们应用里单一全局实例,为我们访问我们自己的应用或其他应用的Content Provider。就如同名字所描述的:Content Resolver接收来自客户的请求,然后解决它们的请求,通过将请求指向特定主机名的Content Provider解决。
Content Resolver包括了CRUD方法(create,read,update,delete)。这些正好与Content Provider中的抽象方法
(insert ,query,update,delete)一 一对应。
(图转自http://www.cnblogs.com/plokmju/p/android_ContentProvider.html)
Content Resolver不知道Content Provider是怎样对数据操作的,也不需要知道。Content Resolver的每个方法通过传递
URI到特定的Content Provider来实现对数据产生影响的操作。
下面我将通过一个Content Resolver的Demo实现对Android系统的User Dictionary进行增删改查操作。
增加(insert):
//调用getContentResolver()获取ContentResolver对象 ContentResolver contentResolver = getContentResolver; ContentValues values = new ContentValues(); values.put(Words.WORD,"NewWord"); //调用ContentResolver.insert(Uri url, ContentValues values)方法增加数据 contentResolver.insert(UserDictionary.Words.CONTENT_URI, values);
删除(delete):
//调用ContentResolver.delete(Uri url, String where, String[] selectionArgs) //方法删除数据,返回的是删除的行数 long deleted = cr.delete(Words.CONTENT_URI,Words.WORD + "= ?", new String[]{"NewWord"});
查找(query):
String [] projection = new String[]{ BaseColumns._ID, UserDictionary.Words.WORD }; Cursor cursor =cr .query(UserDictionary.Words.CONTENT_URI, projection, null, null, null); if(cursor.moveToFirst()){ do{ long id = cursor.getLong(0); String word= cursor.getString(1); Map<String,Object>map = new HashMap<String,Object>(); map.put("id", id); map.put("word", word); list.add(map); }while(cursor.moveToNext());
修改(update):
//调用ContentResolver.update(Uri uri, ContentValues values, String where, //String[] selectionArgs)方法更新数据 //返回更新行数的个数 long update = cr.update(uri, values, null, null);
应用截图: 用户字典截图:
本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。
欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai