【发布时间】:2016-11-28 19:46:01
【问题描述】:
我正在尝试从联系人姓名中获取号码。为了获取所有者的联系人姓名,我使用了以下方法。
public String getName() {
String name = "";
Cursor c = this.getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null);
int count = c.getCount();
String[] columnNames = c.getColumnNames();
boolean b = c.moveToFirst();
int position = c.getPosition();
if (count == 1 && position == 0) {
name = c.getString(c.getColumnIndex("display_name"));
}
c.close();
return name;
}
这个方法很好用。它返回一个正确的名称。
在此之后,我尝试从名称中获取数字,但我的光标计数始终为零。这是我从名称中获取数字的代码。
public String getNumber(String name) {
String number = null;
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
"display_name = '" + name + "'", null, null);
if (cursor.moveToFirst()) {
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
while (phones.moveToNext()) {
number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
}
cursor.close();
return number;
}
我还在清单文件中添加了权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
我不知道我在哪里犯了错误。请帮忙。
【问题讨论】:
标签: android uri android-contentresolver