Android 我想获取手机中存储的联系人,但遇到问题
我使用以下代码从手机中获取联系人 我得到的是姓名,但不是电话号码,请帮助我找到联系人的其他字段Android 我想获取手机中存储的联系人,但遇到问题,android,Android,我使用以下代码从手机中获取联系人 我得到的是姓名,但不是电话号码,请帮助我找到联系人的其他字段 public class DialActivity extends Activity { private ListView mContactList; public String[] fields; public Cursor cursor; public boolean mShowInvisible; public Uri uri; public String[] pr
public class DialActivity extends Activity {
private ListView mContactList;
public String[] fields;
public Cursor cursor;
public boolean mShowInvisible;
public Uri uri;
public String[] projection;
public String[] selectionArgs;
public String selection;
public String sortOrder;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mContactList = (ListView) findViewById(R.id.ListView01);
// Populate the contact list
populateContactList();
}
/**
* Populate the contact list based on account currently selected in the account spinner.
*/
private void populateContactList() {
// Build adapter with contact entries
Cursor cursor = getContacts();
String[] fields = new String[] {
ContactsContract.Data.DISPLAY_NAME
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listrow, cursor,
fields, new int[] {R.id.TextView01});
mContactList.setAdapter(adapter);
}
/**
* Obtains the contact list for the currently selected account.
*
* @return A cursor for for accessing the contact list.
*/
private Cursor getContacts()
{
// Run query
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" +
(mShowInvisible ? "0" : "1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
}
在上面的代码中,我使用了一个自定义的ListRow布局,并在每一行中显示联系人姓名,但我希望填充一个包含姓名和相应号码的列表,这样我就可以通过单击该listItem来拨打这些号码。我知道如何打电话,但我没有电话号码。Contacts contract.Contacts不包含电话号码,但您有联系人的id,因此您现在可以查询Contacts contract.Data以获取电话号码。可以在文档中找到一个示例查询:尝试了它,但在NullPointerException中传递了null结果: