用ContentResolver取得联系人

本文介绍了一种在Android中获取联系人信息的方法,包括姓名、电话号码等,并提供了具体的实现代码示例。此外,还展示了如何通过启动一个Activity来选择联系人并返回相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

取得联系人_id,姓名和电话,代码如下:

public class DaoService {

private Context context;

public static final String[] PEOPLE_PROJECTION = new String[] {

ContactsContract.Contacts._ID,

ContactsContract.CommonDataKinds.Phone.NUMBER,

ContactsContract.Contacts.DISPLAY_NAME

};

public DaoService(Context context) {

super();

this.context = context;

}

public Cursor findAll() {

ContentResolver resolver = context.getContentResolver();

//可以查出非常多非常多的字段,用下面测试下酒知道了

Cursor cursor = resolver.query(

ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PEOPLE_PROJECTION, null, null, null);

return cursor;

}

}

可对上面进行测试:

public class DaoServiceTest extends AndroidTestCase {

public void testFindALl() {

Context context = this.getContext();

DaoService daoService = new DaoService(context);

Cursor cursor = daoService.findAll();

int number = cursor.getColumnCount();

for(int i=0; i<number><span lang="EN-US" style="font-size: 10pt; font-family: " courier new mso-font-kerning:> </span></number>

System.out.println(cursor.getColumnName(i));

}

}

}

接下来,一个实例:

startActivityForResult(new Intent(Intent.ACTION_PICK,uri),requestcode)来打开一个Acitivy,选择后返回一个uri,根据uri来取得联系人的名字、号码等。

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button = (Button) this.findViewById(R.id.myButton1);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

displayNew();

}

});

}

public void displayNew() {

startActivityForResult(new Intent(Intent.ACTION_PICK,

ContactsContract.Contacts.CONTENT_URI),200); //如果是这个uri,则取号码要根据ID去取了

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode) {

case 200:

Uri uri = data.getData();

//resolver.query的包装,为你自动管理query

cursor = managedQuery(uri ,null, null, null, null);

cursor.moveToFirst();

String name = cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME));

Toast.makeText(this,"name:" + name,1).show();

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值