获取联系人联系电话,其实很简单,这里我们使用系统暴露出来的ContentProvider进行获取,注意一点就是AndroidManifest.xml需要开通访问联系人的权限 <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>,好看完整的代码。
package com.figo.helloworld;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
* @author zhuzhifei
* 版权所有
* 获取联系人联系电话
*/
public class ContacterActivity extends Activity {
private Button btnChooseContacter;
private TextView tvContacter;
private static final int PICK_CONTACTER=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.contacterview);
btnChooseContacter=(Button)findViewById(R.id.btnChooseContacter);
btnChooseContacter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(Intent.ACTION_PICK,android.provider.ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACTER);
}
});
tvContacter=(TextView)findViewById(R.id.tvContacter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
try {
switch(requestCode)
{
case PICK_CONTACTER:
final Uri urlRet=data.getData();
if(urlRet!=null)
{
try {
Cursor c=managedQuery(urlRet,null,null,null,null);
c.moveToFirst();
//取得联系人姓名
String strName=c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
//取得联系人的电话
int contactId=c.getInt(c.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phones=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId, null, null);
StringBuffer buffer=new StringBuffer();
int phoneType,resType;
String numPhone;
if(phones.getCount()>0)
{
if(phones.moveToFirst())
{
//这里循环的取出联系人的所有号码,然后显示出来了,也可以实现一个alertDialog,然后让用户选择其中一个
do
{
phoneType=phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
numPhone=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
resType=ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(phoneType);
buffer.append("姓名:"+strName+" "+getString(resType)+":"+numPhone+"\n");
}while(phones.moveToNext());
tvContacter.setText(buffer.toString());
}
}
} catch
(Exception e) {
tvContacter.setText(e.getMessage());
}
}else
{
tvContacter.setText("此联系人没有电话");
}
break;
default:
break;
}
} catch (Exception e) {
tvContacter.setText(e.getMessage());
}
}
}