Android获取通讯录联系人的正确姿势

阅读: 评论:0

Android获取通讯录联系人的正确姿势

Android获取通讯录联系人的正确姿势

公司开发项目,用的是自己私人的小米手机,获取联系人电话,使用正常。来,直接撸代码:
Uri uri = Uri. parse( "content://contacts/people");
Intent intent =  new Intent(Intent. ACTION_PICK, uri); startActivityForResult(intent, 1); 然后onActivityResult()方法接收返回的数据,看代码:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) {    if (data == null) {
        return;
    }     switch (requestCode) {              case 1:             Uri uri = Data();             String phone = getPhone(uri);             tvPhone.setText(endPhone);             break;
    }   } } private String getPhone(Uri uri){   String phone = null;   String name = null;
  //得到ContentResolver对象
  ContentResolver cr = AppContext().getContentResolver();
  //取得电话本中开始一项的光标
 Cursor nameCursor = cr.query(uri, nullnullnullnull);
   if (nameCursor != null) {
      veToFirst();
      //取得联系人姓名
      int nameIndex = ColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
      name = String(nameIndex);
      //取得电话号码
       String ContactId = ColumnIndex(ContactsContract.Contacts._ID));
      Cursor phoneCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URInull,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID "=" + ContactId, nullnull);
      if (phoneCursor != null) {
          while (veToNext()) {
              phone = ColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
         }
      }
      phoneCursor.close();
     nameCursor.close();
 }
  if (StringUtil.isBlank(phone)){
      ToastUtil.showToast("获取失败,请检查是否授予权限,或手动输入!");
  }else {   phone = StringUtil.clearPhoneFromt(phone); }
return phone; } 已经可以成功获取联系人的姓名和代码了~就是这么简单,哈哈。但别忘了在AndroidManifest声明权限(Android 6.0还要记得动态申请隐私权限哦) <uses-permission android:name="android.permission.READ_CONTACTS"/> 功能实现了,哈哈。但是在测试的时候,发现大部分手机能获得通讯录联系人信息,但是在vivo手机就GG了,不是打开联系人空白,就是直接奔溃~以为是vivo手机才会,查看报错: Activity has leaked IntentReceiver that was originally registered here. Are you missing a call to unregisterReceiver()?????一脸懵逼,什么鬼。谷歌也找不到这问题。来吧,给个正确姿势:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE); startActivityForResult(intent, 1); 哈哈,世界又是如此的美好,bug解决啦啦啦。

本文发布于:2024-02-05 02:01:45,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170721513562009.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:姿势   通讯录   联系人   正确   Android
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23