ContentResolver(获取系统联系人)<手动展示;调用系统界面>
来源:互联网 发布:网络测试工程师面试题 编辑:程序博客网 时间:2024/04/30 06:08
public class MainActivity extends AppCompatActivity { private ContentResolver contentResolver; private ListView contacts_list; private Cursor cursor1; private List<Map<String,String>> list=new ArrayList<>(); private SimpleAdapter simpleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 控件 initview(); } //初始化 控件 private void initview(){ //获取内容 访问者 contentResolver = getContentResolver(); contacts_list = (ListView) findViewById(R.id.contacts_list); //获得所有 联系人 findViewById(R.id.getAllContacts_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Uri uri=Uri.parse("content://com.android.contacts/raw_contacts"); Cursor cursor=contentResolver.query(uri,null,null,null,null); while (cursor.moveToNext()){ //获得所有联系人的 id int id=cursor.getInt(cursor.getColumnIndex("_id")); String name=cursor.getString(cursor.getColumnIndex("display_name")); //继续获取相对应的联系人的数据(电话号码) Uri uriAll=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data"); cursor1 = contentResolver.query(uriAll,null,null,null,null); //获取联系人 id 名字 电话 while (cursor1.moveToNext()){ String data1=cursor1.getString(cursor1.getColumnIndex("data1")); String type=cursor1.getString(cursor1.getColumnIndex("mimetype")); if("vnd.android.cursor.item/phone_v2".equals(type)){ Map<String,String> map=new HashMap<String, String>(); map.put("id",id+""); map.put("name",name); map.put("phone",data1); list.add(map); } } simpleAdapter = new SimpleAdapter(MainActivity.this,list, R.layout.contacts_item,new String[]{"id","name","phone"},new int[]{R.id.contacts_id_tv,R.id.contacts_name_tv,R.id.contacts_phone_tv}); contacts_list.setAdapter(simpleAdapter); } } }); //页面跳转 获取指定联系人 findViewById(R.id.ItetentJumpForSingleContacts_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); MainActivity.this.startActivityForResult(intent, 1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: if (resultCode == RESULT_OK) { Uri contactData = data.getData(); Cursor cursor = managedQuery(contactData, null, null, null, null); cursor.moveToFirst(); String num = this.getContactPhone(cursor); Toast.makeText(this, ""+num, Toast.LENGTH_SHORT).show(); } break; default: break; } } private String getContactPhone(Cursor cursor) { // TODO Auto-generated method stub int phoneColumn = cursor .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); int phoneNum = cursor.getInt(phoneColumn); String result = ""; if (phoneNum > 0) { // 获得联系人的ID号 int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID); String contactId = cursor.getString(idColumn); // 获得联系人电话的cursor Cursor phone = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null); if (phone.moveToFirst()) { for (; !phone.isAfterLast(); phone.moveToNext()) { int index = phone .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int typeindex = phone .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); int phone_type = phone.getInt(typeindex); String phoneNumber = phone.getString(index); result = phoneNumber; } if (!phone.isClosed()) { phone.close(); } } } return result; }}
手动展示:
首先获取系统访问者ContnetResolver,
再通过Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");获得手机中所有的联系人Id,以及名字,
再使用 Uri uriAll=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");根据id查询该人的电话,
跳转系统界面,吐司电话号码:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); MainActivity.this.startActivityForResult(intent, 1);
跳转到系统的联系人选择界面,只能单选;
通过回调方法传回来的值,判断有无选中;
有选中获得号码,吐司;
无则无操作;
0 0
- ContentResolver(获取系统联系人)<手动展示;调用系统界面>
- ContentResolver获取系统短消息联系人等
- IOS调用系统联系人界面获取联系人信息
- 通过ContentResolver调用系统URI实现的读取联系人信息
- ContentResolver读取系统联系人数据
- 调用系统联系人的添加界面-android
- android调用系统添加联系人界面
- 调用系统添加联系人界面的套路
- 使用ContentResolver操作手机系统联系人
- Android ContentResolver读取手机系统数据<联系人>
- iOS 调用系统通讯录 获取联系人信息
- Android调用系统存储联系人界面,以及系统短信发送
- android 获取系统联系人并展示在ListView上
- 启动系统联系人界面
- ContentResolver获取手机联系人
- Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。
- 调用系统联系人
- Android调用系统联系人
- Linux基础知识(二)
- html base
- Qt之表单布局(QFormLayout)
- STL容器综合使用
- HDU 5978 To begin or not to begin (简单博弈--找规律)
- ContentResolver(获取系统联系人)<手动展示;调用系统界面>
- 凑算式(蓝桥杯C语言组)
- 再也不需要onActivityResult了。使用响应式解决startActivityForResult和onActivityResult回调繁琐的问题
- vector使用
- Extjs6.2系列之开发环境搭建
- Android 遮罩层效果
- http和https访问共存
- 统计同成绩学生人数(水题)
- javaWeb学习之js方法创建