2016-01-25 3 views
-2

Я хочу показать устройство Контакты Деятельность в Android.I не нужен список контактов, которые будут отображаться в моем пользовательском представлении. Следуя коду, сделайте исключение невозможным для обработки активности.Launch Contacts Деятельность через Intent

Intent i = new Intent(Intent.ACTION_PICK); 
i.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); 
startActivity(i); 
+0

Вы добавили свой класс в файл манифеста? – Stanojkovic

+0

Я хочу вызвать мобильную активность контактов, а не обычную активность (активность контактов - это системная активность). Как вы можете найти класс активности контактов? – google

ответ

0

Вы должны добавить READ_CONTACT разрешения в AndroidManifest.

Intent intent = new Intent(Intent.ACTION_PICK); 
intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
startActivityForResult(intent, 10011); 
+0

Что я должен делать в onActivityResult? – google

+0

Как и @Stanojkovic, если вы хотите использовать контактную информацию, которую вы выбрали. –

1

1) Права доступа

Добавить разрешение на чтение данных контактов на манифест приложения.

2) Вызов Contact Picker

В вашей деятельности, создать Intent, который просит систему, чтобы найти активность, которая может выполнять действия PICK из элементов в Контактах URI.

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

Вызов startActivityForResult, проходя в этом Намерении (и запроса кода целого числа, PICK_CONTACT в данном примере). Это приведет к тому, что Android запустит активность, зарегистрированную для поддержки ACTION_PICK в People.CONTENT_URI, а затем вернется к этому действию, когда выбор сделан (или отменен).

startActivityForResult(intent, PICK_CONTACT); 

3) Прослушивание результата

Также в вашей деятельности, переопределить метод onActivityResult слушать возвращения из «выберите контакт» активность была запущена на шаге 2. Вы должны проверить что возвращаемый код запроса соответствует ожидаемому значению, а результат - RESULT_OK.

Вы можете получить URI выбранного контакта, вызвав getData() в параметре Intent данных. Чтобы получить имя выбранного контакта, вам нужно использовать этот URI для создания нового запроса и извлечения имени из возвращаемого курсора.

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
switch (reqCode) { 
case (PICK_CONTACT) : 
if (resultCode == Activity.RESULT_OK) { 
Uri contactData = data.getData(); 
Cursor c = getContentResolver().query(contactData, null, null, null, null); 
if (c.moveToFirst()) { 
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
// TODO Whatever you want to do with the selected contact name. 
    } 
} 
break; 
    } 
} 
Смежные вопросы