Android 获取手机联系人实例代码详解

我的风格,废话不多说了,直接给大家贴代码了。

具体代码如下所示:

package com.org.demo.demo;
import com.org.wangfeng.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class GetPhoneActivity extends Activity {
 private EditText editText;
 private Button button;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.getphoneactivity);
  editText = (EditText) findViewById(R.id.et_getphone);
  button = (Button) findViewById(R.id.bb_getphone);
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Intent intent = new Intent(GetPhoneActivity.this,
      ContactActivity.class);
    startActivityForResult(intent, 1);
   }
  });
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // System.out.println("resultCode:" + resultCode);
  // System.out.println("requestCode:" + requestCode);
  Log.d("jiejie", "被调用了");
  if (resultCode == Activity.RESULT_OK) {
   String phone = data.getStringExtra("phone");
   Log.d("jiejie", "_______________"+phone);
   phone = phone.replaceAll("-", "").replaceAll(" ", "");// 替换-和空格

   editText.setText(phone);// 把电话号码设置给输入框
  }
  super.onActivityResult(requestCode, resultCode, data);
 }
}
package com.org.demo.demo;
import java.util.ArrayList;
import java.util.HashMap;
import com.org.wangfeng.R;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
public class ContactActivity extends Activity {
 private ListView lvList;
 private ArrayList<HashMap<String, String>> readContact;
 private TextView back;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_contact);
  back =(TextView)findViewById(R.id.back);
  back.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    finish();
   }
  });
  lvList = (ListView) findViewById(R.id.lv_list);
  readContact = readContact();
  // System.out.println(readContact);
  lvList.setAdapter(new SimpleAdapter(this, readContact,
    R.layout.contact_list_item, new String[] { "name", "phone" },
    new int[] { R.id.tv_name, R.id.tv_phone }));
  lvList.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    String phone = readContact.get(position).get("phone");// 读取当前item的电话号码
    Intent intent = new Intent();
    intent.putExtra("phone", phone);
    setResult(Activity.RESULT_OK, intent);// 将数据放在intent中返回给上一个页面

    finish();
   }
  });
 }
 private ArrayList<HashMap<String, String>> readContact() {
  // 首先,从raw_contacts中读取联系人的id("contact_id")
  // 其次, 根据contact_id从data表中查询出相应的电话号码和联系人名称
  // 然后,根据mimetype来区分哪个是联系人,哪个是电话号码
  Uri rawContactsUri = Uri
    .parse("content://com.android.contacts/raw_contacts");
  Uri dataUri = Uri.parse("content://com.android.contacts/data");
  ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
  // 从raw_contacts中读取联系人的id("contact_id")
  Cursor rawContactsCursor = getContentResolver().query(rawContactsUri,
    new String[] { "contact_id" }, null, null, null);
  if (rawContactsCursor != null) {
   while (rawContactsCursor.moveToNext()) {
    String contactId = rawContactsCursor.getString(0);
    // System.out.println(contactId);
    // 根据contact_id从data表中查询出相应的电话号码和联系人名称, 实际上查询的是视图view_data
    Cursor dataCursor = getContentResolver().query(dataUri,
      new String[] { "data1", "mimetype" }, "contact_id=?",
      new String[] { contactId }, null);
    if (dataCursor != null) {
     HashMap<String, String> map = new HashMap<String, String>();
     while (dataCursor.moveToNext()) {
      String data1 = dataCursor.getString(0);
      String mimetype = dataCursor.getString(1);
      // System.out.println(contactId + ";" + data1 + ";"
      // + mimetype);
      if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
       map.put("phone", data1);
      } else if ("vnd.android.cursor.item/name"
        .equals(mimetype)) {
       map.put("name", data1);
      }
     }
     list.add(map);
     dataCursor.close();
    }
   }
   rawContactsCursor.close();
  }
  return list;
 }
}

本段代码到此结束,代码比较简单,并附有注释,希望对大家学习android获取手机联系人相关知识有所帮助。

(0)

相关推荐

  • Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    android获取手机通讯录联系人信息 复制代码 代码如下: private void getPhoneContacts() {        ContentResolver resolver = this.getContentResolver();                // 获取手机联系人       Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,                  new String[] { Phone

  • Android ContentProvider实现获取手机联系人功能

    在之前项目中有用到关于获取手机联系人的部分,闲置就想和大家分享一下,话不多说,上代码: java部分: package com.example.content; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle

  • android获取联系人示例分享

    复制代码 代码如下: package com.homer.phone; import java.util.ArrayList;import java.util.HashMap; import android.app.Activity;import android.database.Cursor;import android.os.Bundle;import android.provider.ContactsContract;import android.provider.ContactsCont

  • Android获取联系人姓名和电话代码

    在开发中往往有要获取联系人列表的功能,但是这次却不是获取联系人列表,而是在联系人列表点击单个联系人,获取单个联系人的姓名和电话,并设置在指定的输入框内,方便用户的使用:以下是实现的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la

  • Android获取联系人头像的方法

    本文实例讲述了Android获取联系人头像的方法.分享给大家供大家参考,具体如下: public byte[] getPhoto(String people_id) { String photo_id = null; String selection1 = ContactsContract.Contacts._ID + " = " + people_id; Cursor cur1 = getContentResolver().query( ContactsContract.Contac

  • Android获取手机联系人信息

    Android如何获取手机联系人信息,本文为大家揭晓. 获取手机联系人信息步骤: 1.获取 ContentResolver ContentResolver resolver = getContentResolver(); 2.resolver.query(*)查询信息 查询手机联系人的URI:ContactsContract.RawContacts.CONTENT_URI 查询手机联系人手机号的URI:ContactsContract.CommonDataKinds.Phone.CONTENT_

  • Android编程操作联系人的方法(查询,获取,添加等)

    本文实例讲述了Android编程操作联系人的方法.分享给大家供大家参考,具体如下: Android系统中的联系人也是通过ContentProvider来对外提供数据的,我们这里实现获取所有联系人.通过电话号码获取联系人.添加联系人.使用事务添加联系人. 获取所有联系人 1. Android系统中的联系人也是通过ContentProvider来对外提供数据的 2. 数据库路径为:/data/data/com.android.providers.contacts/database/contacts2

  • Android实现获取联系人电话号码功能

    本篇文档主要记录一下获取联系人的电话号码的一种方式. 1.选择联系人 ............ //构造一个隐式的Intent,拉起联系人界面 final Intent pickIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); mSuspectButton = (Button)v.findViewById(R.id.crime_suspect); mSuspectButton.setOn

  • android如何获取联系人所有信息

    只要是开发和手机通讯录有关的应用,总要学会获取联系人信息,每次都google很麻烦,怎么办? 写一个工具类,获取到通讯录里所有的信息并分好类,至于大家怎么用就不管了,看下代码就都明白了,虽然代码很多,但是很简单,大部分都已分类,如果有没有写上的,大家可以打开自己手机上通讯录数据库,里面的字段都有标明,用的内容提供者,因此我们只需要拿到那个字段名基本上就能取出数据了. 工具类: package com.example.test; import java.util.ArrayList; import

  • Android获取手机联系人电话号码并返回结果

    之前做了一个小练习需要用到获取手机里联系人的电话号码,通过查阅相关的资料,自己尝试写了一个小例子,可以成功获取. 首先需要在AndroidManifest.xml中获取权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> xml布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro

随机推荐