Android 获取手机联系人实例代码详解
我的风格,废话不多说了,直接给大家贴代码了。
具体代码如下所示:
packagecom.org.demo.demo;
importcom.org.wangfeng.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
publicclassGetPhoneActivityextendsActivity{
privateEditTexteditText;
privateButtonbutton;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.getphoneactivity);
editText=(EditText)findViewById(R.id.et_getphone);
button=(Button)findViewById(R.id.bb_getphone);
button.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
Intentintent=newIntent(GetPhoneActivity.this,
ContactActivity.class);
startActivityForResult(intent,1);
}
});
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
//System.out.println("resultCode:"+resultCode);
//System.out.println("requestCode:"+requestCode);
Log.d("jiejie","被调用了");
if(resultCode==Activity.RESULT_OK){
Stringphone=data.getStringExtra("phone");
Log.d("jiejie","_______________"+phone);
phone=phone.replaceAll("-","").replaceAll("","");//替换-和空格
editText.setText(phone);//把电话号码设置给输入框
}
super.onActivityResult(requestCode,resultCode,data);
}
}
packagecom.org.demo.demo;
importjava.util.ArrayList;
importjava.util.HashMap;
importcom.org.wangfeng.R;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.database.Cursor;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.ListView;
importandroid.widget.SimpleAdapter;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.TextView;
publicclassContactActivityextendsActivity{
privateListViewlvList;
privateArrayList<HashMap<String,String>>readContact;
privateTextViewback;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
back=(TextView)findViewById(R.id.back);
back.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
finish();
}
});
lvList=(ListView)findViewById(R.id.lv_list);
readContact=readContact();
//System.out.println(readContact);
lvList.setAdapter(newSimpleAdapter(this,readContact,
R.layout.contact_list_item,newString[]{"name","phone"},
newint[]{R.id.tv_name,R.id.tv_phone}));
lvList.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,
intposition,longid){
Stringphone=readContact.get(position).get("phone");//读取当前item的电话号码
Intentintent=newIntent();
intent.putExtra("phone",phone);
setResult(Activity.RESULT_OK,intent);//将数据放在intent中返回给上一个页面
finish();
}
});
}
privateArrayList<HashMap<String,String>>readContact(){
//首先,从raw_contacts中读取联系人的id("contact_id")
//其次,根据contact_id从data表中查询出相应的电话号码和联系人名称
//然后,根据mimetype来区分哪个是联系人,哪个是电话号码
UrirawContactsUri=Uri
.parse("content://com.android.contacts/raw_contacts");
UridataUri=Uri.parse("content://com.android.contacts/data");
ArrayList<HashMap<String,String>>list=newArrayList<HashMap<String,String>>();
//从raw_contacts中读取联系人的id("contact_id")
CursorrawContactsCursor=getContentResolver().query(rawContactsUri,
newString[]{"contact_id"},null,null,null);
if(rawContactsCursor!=null){
while(rawContactsCursor.moveToNext()){
StringcontactId=rawContactsCursor.getString(0);
//System.out.println(contactId);
//根据contact_id从data表中查询出相应的电话号码和联系人名称,实际上查询的是视图view_data
CursordataCursor=getContentResolver().query(dataUri,
newString[]{"data1","mimetype"},"contact_id=?",
newString[]{contactId},null);
if(dataCursor!=null){
HashMap<String,String>map=newHashMap<String,String>();
while(dataCursor.moveToNext()){
Stringdata1=dataCursor.getString(0);
Stringmimetype=dataCursor.getString(1);
//System.out.println(contactId+";"+data1+";"
//+mimetype);
if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
map.put("phone",data1);
}elseif("vnd.android.cursor.item/name"
.equals(mimetype)){
map.put("name",data1);
}
}
list.add(map);
dataCursor.close();
}
}
rawContactsCursor.close();
}
returnlist;
}
}
本段代码到此结束,代码比较简单,并附有注释,希望对大家学习android获取手机联系人相关知识有所帮助。