获取联系人名称及全部电话的实例

本文介绍了一种使用Android内容提供者(Content Provider)查询联系人及其电话号码的方法。通过获取People表中的联系人信息,并进一步获取其对应的电话号码详情。

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

CODE:

String[] projection = new String[]{
People._ID,
People.NAME
};

Uri peopleUri = People.CONTENT_URI;
Log.d( TAG, "peopleUri: " + peopleUri );
Cursor peopleCursor = managedQuery( peopleUri, projection, null, null, People.DEFAULT_SORT_ORDER );

if( peopleCursor == null ){
Log.e( TAG, "peopleCursor is null");
return false;
}

if( peopleCursor.moveToFirst()){

boolean isAfterLastPeople = peopleCursor.isAfterLast();
while( !isAfterLastPeople ){
String name = peopleCursor.getString(peopleCursor.getColumnIndexOrThrow( People.NAME ));
Log.d( TAG, "name: " + name );

Long personId = peopleCursor.getLong( peopleCursor.getColumnIndexOrThrow(People._ID) );
Uri personUri = ContentUris.withAppendedId(peopleUri, personId );
Uri phoneUri= Uri.withAppendedPath( personUri, People.Phones.CONTENT_DIRECTORY );
Log.d( TAG, "phoneUri: " + phoneUri );

Cursor phoneCursor = managedQuery( phoneUri, null, null, null, People.Phones.DEFAULT_SORT_ORDER );
if( phoneCursor == null ){
Log.e( TAG, "phoneCursor is null");
return false;
}

if( phoneCursor.moveToFirst()){
boolean isAfterLastPhone = phoneCursor.isAfterLast();
while( !isAfterLastPhone ){
String number= phoneCursor.getString( phoneCursor.getColumnIndexOrThrow( PhonesColumns.NUMBER));
String type = phoneCursor.getString( phoneCursor.getColumnIndexOrThrow( PhonesColumns.TYPE ));

Log.d( TAG, "number:" + number );
Log.d( TAG, "type:" + type );

phoneCursor.moveToNext();
isAfterLastPhone = phoneCursor.isAfterLast();
}
}

peopleCursor.moveToNext();
isAfterLastPeople = peopleCursor.isAfterLast();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值