第六章 访问ContentProvider共享数据

内容提供器Content Provider       //Provider    n. 供应者;养家者

      主要用于在不同的应用程序之间实现数据共享功能

 

用法:    1.使用现有的内容提供器来读取和操作相应程序中的数据

          

 

      通过ContentResolver实现增删改查。 //resolver  n. 溶剂;[电子] 分解器;下决心者

           ContentResolver contentResolver = context.getContentResolver

 

      通过URI来指明所要操作的数据;

           增删改查方法基本类似与SQLiteDatabase中的增删改差,只不过把第一个参数改为了URI。

 

      查询数据:

           通过ContentResolver的query()方法返回一个Cursor对象

           @Nullable Cursor query(@NonNull Uri uri, @Nullable String[] projection,

            @Nullable String selection, @Nullable String[] selectionArgs,

            @Nullable String sortOrder)

参数:    1. uri 查询某个程序下的某一张表

           2. projection 查询的列名     //projection n. 投射;规划;突出;发射;推测

           3. selection where的约束条件

           4.selectionArgs 为where中的占位符提供具体的值

           5.sortOrder 指定查询结果的排序方式

           返回一个Cursor对象

 

      插入数据:

           @Nullable Uri insert(@NonNull Uri url, @Nullable ContentValues values)

           参数:ContentValues  待插入一个ContentValues对象类型的新纪录

           返回新纪录的Uri

 

      修改数据:

           int update(@NonNull Uri uri, @Nullable ContentValues values,

            @Nullable String where, @Nullable String[] selectionArgs)

           参数:   @Nullable ContentValues values  待修改的记录值

                      @Nullable String where              指定匹配记录的条件

                      @Nullable String[] selectionArgs  指定where中占位符的值

           返回被修改记录的条数

 

      删除数据:

           int delete(@NonNull Uri url, @Nullable String where,

            @Nullable String[] selectionArgs)

           参数:    @Nullable String where                    指定匹配记录的条件

                      @Nullable String[] selectionArgs  指定where中占位符的值

           返回被删除记录的条数

 

 

           读取系统联系人案例代码:

 1 /**
 2  * 获得联系人信息并放入contactsList
 3  */
 4 private void readContacts()
 5 {
 6     Cursor cursor = null;// cusor n. 游标
 7 
 8     /**
 9      * 查询联系人数据放入cusor中
10      *  参数:    1. uri 查询某个程序下的某一张表 
11      *      2. projection 查询的列名     //projection n. 投射;规划;突出;发射;推测 
12      *      3. selection where的约束条件 
13      *      4.selectionArgs 为where中的占位符提供具体的值 
14      *      5.sortOrder 指定查询结果的排序方式
15      */
16     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
17     ContentResolver contentResolver = getContentResolver();
18     cursor = contentResolver.query(uri, null, null, null, null);
19     try
20     {
21         while (cursor.moveToNext())
22         {
23             // 获取联系人姓名
24             String name = cursor.getString(cursor.getColumnIndex(
25                             ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
26             // 获取联系人手机号
27             String number = cursor.getString(cursor.getColumnIndex(
28                     ContactsContract.CommonDataKinds.Phone.NUMBER));
29 
30             contactsList.add(name + " " + number);
31         }
32 
33     } catch (Exception e)
34     {
35         e.printStackTrace();
36     } finally
37     {
38         // 关闭cursor
39         if (cursor != null)
40         {
41             cursor.close();
42         }
43     }
44 }

 

 

**注意:在AndroidManifest.xml中声明读取系统取联系人权限

<!-- 声明读取系统取联系人权限 -->

<uses-permission android:name="android.permission.READ_CONTACTS"/>

            

 

          

          

          

用法:    2.创建自己的内容提供器给我们程序的数据提供外部接口

 

posted on 2015-12-13 17:47  starFarming  阅读(290)  评论(0编辑  收藏  举报