2012-03-21 5 views
3

Мне удалось написать программу добавления, которая после нажатия пользователем кнопки будет доступна для получения номера телефона, который заполнит поле editText. Проблема в том, что если контакт имеет несколько номеров, он всегда будет занимать самое большое число.Запрос всех телефонных номеров контакта

Я читаю другую тему, Getting Number from Contacts Picker, есть ответ, но я не понимаю. Поскольку я новичок в программировании на Android, Буду признателен, если кто-нибудь может дать мне пошаговые инструкции.

ответ

2

Во-первых, вам может потребоваться запросить всех контактов в телефонной книге.

 // 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 + " = '1'"; 
     String[] selectionArgs = null; 
     String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

     // Build adapter with contact entries 
     Cursor mCursor = managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
     // 
     // Bind mCursor to to your Listview 
     // 

После этого, когда пользователь выбирает контакт в списке, вы сделаете второй запрос, чтобы получить метку и номер этого контакта.

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     mCursor.moveToPosition(position); 
     startManagingCursor(mCursor);  
     String contactID = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts._ID)); 

     Cursor phoneNumCursor = getContentResolver().query(Phone.CONTENT_URI, 
       null, Phone.CONTACT_ID + "=?", new String[] { contactID }, null); 

     phoneNumCursor.moveToFirst(); 

     Vector<String> phoneTypeList = new Vector<String>(); 
     Vector<String> phoneNumberList = new Vector<String>(); 

     while (!phoneNumCursor.isAfterLast()){ 
      int type = phoneNumCursor.getInt(phoneNumCursor.getColumnIndex(Phone.TYPE)); 
      phoneTypeList.add(String.valueOf(Phone.getTypeLabel(getResources(),type,""))); 
      phoneNumberList.add(phoneNumCursor.getString(phoneNumCursor.getColumnIndex(Phone.NUMBER))); 
      phoneNumCursor.moveToNext(); 
     } 
     // 
     // Feel free to show label and phone number of that contact. ^^ 
     // 

Обновлено:

Ниже приведен пример, если вы хотите использовать Contact Picker.

private static final int CONTACT_PICKER_RESULT = 1001; 

    protected void startContactPicker(){ 
     Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI); 
     startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      switch (requestCode) { 
      case CONTACT_PICKER_RESULT: 
       Cursor cursor = null; 
       String phoneNumber = ""; 
       try { 
        Uri result = data.getData(); 
        String id = result.getLastPathSegment(); 
        cursor = getContentResolver().query(Phone.CONTENT_URI, 
          null, Phone.CONTACT_ID + "=?", new String[] { id }, null); 

        int phoneIdx = cursor.getColumnIndex(Phone.DATA); 
        if (cursor.moveToFirst()) { 
         while (!cursor.isAfterLast()){ 
          phoneNumber = cursor.getString(phoneIdx); 
          // 
          // this will go through all phoneNumber of selected contact. 
          // 

          cursor.moveToNext(); 
         } 
        } 
       } catch (Exception e) { 
       } finally { 
        if (cursor != null) { 
         cursor.close(); 
        } 
        numberView.setText(phoneNumber); 

       } 

       break; 
      }   
     } 
    } 
+0

значение представления списка, я должен добавить в XML? – Akiff

+0

Вы можете поместить его в XML или сделать это с помощью java-кода, чтобы отобразить список всех контактов. – PhatHV

+0

спасибо за ответ! я стараюсь идти медленно и понимать программу. Im в настоящее время потеряно – Akiff

Смежные вопросы