水纸谷幽 2014-05-24 02:44 采纳率: 0%
浏览 1978

在自己开发的应用程序中读取通讯录,想选择一个电话号码到自己的应用程序中

用下面的方法虽然可以得到一个电话号码,但不是自己选择的电话号码,每次都返回那个号码.求大神帮忙看看要怎么才能读取到自己所选的号码...先谢过了`enter code here @Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
//向下移动光标
while(cursor.moveToNext())
{
//取得联系人名字
int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameFieldColumnIndex);
//取得电话号码
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId + " AND "
+ ContactsContract.CommonDataKinds.Phone.TYPE + "=" +
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, null, null);
if(phone.moveToFirst())
{
String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
string = PhoneNumber ;
cursor.close();
mNumber.setText(string);
break;
}
}

}`
  • 写回答

1条回答 默认 最新

  • Li-Sai 2014-06-20 13:23
    关注

    Cursor cursor = mContentResolver.query(Contacts.CONTENT_URI, null,
    null, null, null);
    while (cursor.moveToNext()) {
    //取得联系人ID,Name
    int id = cursor.getInt(cursor.getColumnIndex(Contacts._ID));
    String name = cursor.getString(cursor
    .getColumnIndex(Contacts.DISPLAY_NAME));
    //根据Id得到联系人的另一张表
    Cursor cursorPhone = mContentResolver.query(Phone.CONTENT_URI,
    null, Phone.CONTACT_ID + "=" + id, null, null);
    while (cursorPhone.moveToNext()) {
    //此表中有联系人号码
    String phone = cursorPhone.getString(cursorPhone
    .getColumnIndex(Phone.NUMBER));
    Log.i("-------------------", phone);
    ConstactVO vo = new ConstactVO(id, name, phone);
    list.add(vo);
    }
    }

    应该就是这样 参考一下吧

    评论

报告相同问题?

悬赏问题

  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型