我试图在Android上查询联系人的所有电话号码,目前我使用以下方法显示联系人:
private void showContactsList(){
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
我的活动结果如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
case PICK_CONTACT :
if(resultCode == Activity.RESULT_OK){
phoneNumbersList = new ArrayList<>();
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData, null, null, null, null);
if(c.moveToFirst()){
final String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
String hasNumber = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if(Integer.valueOf(hasNumber) == 1){
Cursor phoneNumbers = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId,
null,
null);
while(phoneNumbers.moveToNext()){
String phoneNumber = phoneNumbers.getString(phoneNumbers.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if(phoneNumber.length() >= 10){
phoneNumber = phoneNumber.replace(" ", "");
if(phoneNumber.length() > 10){
phoneNumber = phoneNumber.substring(phoneNumber.length() - 10);
}
phoneNumbersList.add(phoneNumber);
}
}
itemSelected = 0;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getResources().getString(R.string.contacts_title));
builder.setSingleChoiceItems(phoneNumbersList.toArray(new String[phoneNumbersList.size()]), itemSelected, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
itemSelected = i;
}
});
builder.setPositiveButton(getResources().getString(R.string.ok_string), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String selectPhoneNumber = phoneNumbersList.get(itemSelected);
editNumero.setText(selectPhoneNumber);
editConfirme.setText(selectPhoneNumber);
dialogInterface.dismiss();
}
});
builder.show();
}
}
}
}
}
这将显示一个对话框,要求用户选择一个电话号码,遗憾的是,只显示保存到设备中的电话号码,从Whatsapp或Telegram等应用程序保存的电话号码不会显示在查询结果中。例如,如果选择了从电报导入的联系人,则hasNumber的值为0,即使该联系人确实有电话号码。
如何修改查询以同时检索这些电话号码?