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获取手机联系人相关知识有所帮助。