一。概念:
 * ContentProvider,内容提供者,android四组件之一,可以跨程序访问数据;
 * 若用ContentProvider实现不同应用程序之间数据的共享,必须借助ContentResolver(内容解析器)类,
 * 1.获得ContentResolver对象:Context.getContentResolver();
 * 2.通过ContentResolver实例进行CRUD操作;
 * 3.当进行增删改查时,和SQLiteOpenHelper不同,不接受表名,而是接受一个URI参数。
 * 4.Uri格式:协议://权限/路径;

二。访问手机联系人实例:
public class MainActivity extends Activity {


private ListView listView;
private ArrayAdapter adapter;
private List data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //得到ListVIew实例
        listView=(ListView) findViewById(R.id.listView);
        //得到数据源

        data=new ArrayList();
        //创建适配器
        adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1, data);
        //设置适配器
        listView.setAdapter(adapter);

 

    }

 //查询联系人

 

    public void queryContacts(View view){
    Cursor cursor=null;
    /**
    * 通过Context的getContentResolver(),得到一个ContentResolver对象,从而进行CRUD操作,
    * 和SQLiteOpenHelper的CRUD方法一样,不同的是,在ContentReslover进行CRUD操作时,不接受表名,
    * 而是接受一个Uri类型的对象作为参数,这个参数称为内容URI;
    * 内容URI的组成:协议://权限/路径;协议是content,权限一般是包名,如com.example,路径是对不同的表作
    * 区分,如存在两张表table1和table2,则完整的内容URI可以写成:content://com.example.person/table1,
    * 然后,把内容URI解析成Uri对象:Uri.Parse(String URI);
    * 
    */

    cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
    while(cursor.moveToNext()){
    String body=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    String address=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    data.add(body+"\n"+address);
    }

    //更新适配器
    adapter.notifyDataSetChanged();

    }

 

}

三。运行效果:

Android 中ContentProvider的用法及用ContentProvider访问联系人_第1张图片

更多相关文章

  1. android 之json对象解析并展示(含json解析源码)
  2. Android中使用putExtra()传递对象实例
  3. Android之短信广播接收内容
  4. Android核心模块内容概述 2012.07.25
  5. android Gallery控件与BaseAdapter适配器
  6. Android canvas 清空内容

随机推荐

  1. IDA动态调试Android的DEX文件
  2. 调用Android系统设置中的Intent
  3. Android源码下载出现的问题
  4. android ramdisk.img解包,打包
  5. Android(安卓)ContentProvider 完全解析
  6. Android中m、mm、mmm、mma、mmma的区别
  7. [转]Android选项卡(TabWidget)例子
  8. Android(安卓)之Service
  9. android adb push 与 adb install的比较(
  10. android布局中layout_…