2011-09-21 76 views
0

在一個簡單的Android應用程序中,我需要使用Contacts選取器從Address Book中獲取電話號碼。ContactPicker已過濾

要打開聯繫人選擇器我用下面的代碼:

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

所有工作正常,但在聯繫人選擇器,我可以從Gmail中查看聯繫人,如果我使用聯繫人選擇器在手機應用程序我只看到Addess書的接觸。如何將聯繫人選取器顯示爲電話應用程序(無需Gmail聯繫人)?

回答

0

幫我只是過濾電話號碼:

Cursor cursor = managedQuery(intent.getData(), null, null, null, null); 
     ArrayList<String> phoneNumber = new ArrayList<String>(); 
     while (cursor.moveToNext()) { 
      String contactId = cursor.getString(cursor 
        .getColumnIndex(ContactsContract.Contacts._ID)); 

      String name = cursor 
        .getString(cursor 
          .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
      phoneNumber.add(name); 
      String hasPhone = cursor 
        .getString(cursor 
          .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

      if (hasPhone.equalsIgnoreCase("1")) { 
       hasPhone = "true"; 
      } else { 
       hasPhone = "false"; 
      } 

      if (Boolean.parseBoolean(hasPhone)) { 
       Cursor phones = null; 

       phones = getContentResolver().query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
           + " = " + contactId, null, null); 

       while (phones.moveToNext()) { 

        phoneNumber 
          .add(phones.getString(phones 
            .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 

       } 
       phones.close(); 
      } 
     } 
     cursor.close(); 
+0

我的問題是相對於用戶界面,我需要出示聯繫人選擇器沒有在列表中的Gmail聯繫人。用戶選擇後,我已經可以選擇獲取電話號碼(如果有的話)。 – Fabrizio