Моя цель - отображать пользователю только контакты с номером телефона и позволить пользователю выбрать несколько контактов, которые я хочу сохранить локально.
Я использовал различные варианты вместо ContactsContract.Contacts.CONTENT_URI в методе ниже. Но я получаю очень много контактов (многие из них - мусор с только идентификаторами электронной почты).
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_selector);
((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(contactIntent, 1);
}
});
}
Если я передаю ContactsContract.Contacts.CONTENT_URI в качестве параметра для указанного выше метода, а в случае метода обработчика, указанного ниже, String [] для метода запроса в качестве параметров проекции (которые показаны с комментариями), метод завершится с ошибкой java.lang.IllegalArgumentException. Если я передам null в методе ниже, то какой бы контакт я ни выбрал, я не нахожу столбца, связанного с номером телефона или электронной почтой.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data != null)
{
Uri uri = data.getData();
if(uri != null)
{
Cursor c = null;
try
{
c = getContentResolver().query(uri, null
// new String[] {
//ContactsContract.CommonDataKinds.Phone.NUMBER,
//ContactsContract.CommonDataKinds.Phone.TYPE},
, null, null, null);
if(c != null && c.moveToFirst())
{
String number = c.getString(0);
String type = c.getString(1);
}
}
finally
{
if(c != null && !c.isClosed())
c.close();
}
}
}
}
Есть ли способ отображать только контакты, видимые пользователю обычно, когда пользователь переходит в телефонную книгу и у которой есть доступные номера телефонов?
Я пробовал пройти через все потоки в stackoverflow и других сайтах, но не смог найти никакого решения, которое решает эту проблему, хотя многие люди опубликовали эту проблему. Я мало работал с платформой Android и, возможно, упустил некоторые незначительные детали, и я считаю, что должен быть простой способ добиться этого.
Пожалуйста, предложите. Ценю вашу помощь.
Спасибо.