如何从ContactsContract Android获取电话号码?
有人能澄清一下我是如何输入电话号码的,而不是通过Contacts.Contacts.HAS\u phone\u号码检查是否有电话号码的吗。我尝试了ContractsContract.CommonKinds.Phone.NUMBER替换的是电话号码,但它继续崩溃。下面的代码适用于您的电话号码 公共类ContactListActivity扩展了ListActivity{ 私有游标如何从ContactsContract Android获取电话号码?,android,android-contacts,contactscontract,Android,Android Contacts,Contactscontract,有人能澄清一下我是如何输入电话号码的,而不是通过Contacts.Contacts.HAS\u phone\u号码检查是否有电话号码的吗。我尝试了ContractsContract.CommonKinds.Phone.NUMBER替换的是电话号码,但它继续崩溃。下面的代码适用于您的电话号码 公共类ContactListActivity扩展了ListActivity{ 私有游标 @Override public void onCreate(Bundle icicle) { super.on
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/*
ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to);
setListAdapter(adapter);
*/
setContentView(R.layout.settings);
Cursor cur = getContacts();
ListView lv = (ListView)findViewById(android.R.id.list);
//String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
// int[] to = new int[] {R.id.checkBox};
String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this,
R.layout.contact_list_item,
cur,
fields,
new int[] {R.id.cbContact, R.id.tvPhoneNo});
lv.setAdapter(adapter);
}
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection =
new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME +
" COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/*
ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to);
setListAdapter(adapter);
*/
setContentView(R.layout.settings);
Cursor cur = getContacts();
ListView lv = (ListView)findViewById(android.R.id.list);
//String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
// int[] to = new int[] {R.id.checkBox};
String[] fields = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this,
R.layout.contact_list_item,
cur,
fields,
new int[] {R.id.cbContact, R.id.tvPhoneNo});
lv.setAdapter(adapter);
}
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection =
new String[]{ ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +
" COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
}我已使用此代码从通话记录中检索到电话号码
Cursor cursor = contentResolver.query(uri, null, selection, selectionArgs,"date DESC");
if (cursor != null && cursor.getCount() > 0)
{
while (cursor.moveToNext())
{
phNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
callDuration = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
dur = Integer.parseInt(callDuration);
}
}
cursor.close();
希望这将对您有所帮助。通过使用ContactsContract.CommonDataTypes.Phone.CONTENT\u URI而不是ContactsContract解决,如下代码所示: 公共类ContactListActivity扩展了ListActivity{ 私有游标
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/*
ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to);
setListAdapter(adapter);
*/
setContentView(R.layout.settings);
Cursor cur = getContacts();
ListView lv = (ListView)findViewById(android.R.id.list);
//String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
// int[] to = new int[] {R.id.checkBox};
String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this,
R.layout.contact_list_item,
cur,
fields,
new int[] {R.id.cbContact, R.id.tvPhoneNo});
lv.setAdapter(adapter);
}
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection =
new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER};
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME +
" COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
/*
ContactListCursorAdapter adapter = new ContactListCursorAdapter(getApplicationContext(), R.layout.contact_list_view, cursor, from, to);
setListAdapter(adapter);
*/
setContentView(R.layout.settings);
Cursor cur = getContacts();
ListView lv = (ListView)findViewById(android.R.id.list);
//String[] from = new String[] {ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};
// int[] to = new int[] {R.id.checkBox};
String[] fields = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
SimpleCursorAdapter adapter =
new SimpleCursorAdapter(this,
R.layout.contact_list_item,
cur,
fields,
new int[] {R.id.cbContact, R.id.tvPhoneNo});
lv.setAdapter(adapter);
}
private Cursor getContacts() {
// Run query
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection =
new String[]{ ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
String selection = null;
String[] selectionArgs = null;
String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +
" COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
}非常感谢您的帮助!:D我刚刚意识到我的错误,并已将已解决的代码张贴在上面。