ContentProvider(内容提供者):
内容提供者的用法一般有两种,一种是使用现有的内容提供者来读取和操作相应程序中的数据,另一种是创建自己的内容提供者给我们程序的数据提供外部访问接口。
代码如下:
public void getContacts(final View view){
// 查询联系人的电话号码
final Cursor cursor=mCr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
BaseAdapter adapter = new BaseAdapter(){
@Override
public int getCount() {
// TODO Auto-generated method stub
return cursor.getCount();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
cursor.moveToPosition(position);
TextView rb = new TextView(MainActivity.this);
String number = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.NUMBER))
.replace("-", "")
.replace(" ", "").trim();
// rb.setText(number);
String name = cursor
.getString(cursor.getColumnIndex(
ContactsContract.CommonDataKinds
.Phone.DISPLAY_NAME)).trim();
rb.setText("姓名:"+name+"号码:"+number);
return rb;
}};
final ListView listView = (ListView)findViewById(R.id.lv_main_values);
listView.setAdapter(adapter);
}
这里我重写了getcount ,getitem,getItemId,getView,四个方法
在getView方法里获取联系人信息,这里我写的跟别人的差不多,可问题就是查找到的信息只有一个,而我本地信息不止一个。求大神指教下!
再在配置里面添加联系人的权限如下
<!-- 添加联系人的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
下面是点击按钮直接弹出联系人列表:
public void getIdContacts(View view){
//调用联系人界面
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("vnd.android.cursor.dir/phone");
startActivityForResult(intent,0x100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Uri uri=data.getData();
Cursor cursor=getContentResolver().query(uri, null, null, null, null);
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndex(Contacts.Phones.NAME));
String number=cursor.getString(cursor.getColumnIndex(Contacts.Phones.NUMBER))
.replace("-", "").replace(" ", "").trim();
mTv_main_values.setText("电话号码:"+number+"姓名:"+name);
}
}