2014-02-27 23 views
-1

我正在開發一個應用程序,我必須從聯繫人中搜索號碼並將該聯繫人添加到我的編輯文本中。我寫了一些代碼,它去接觸而不是在編輯文本添加請告訴我任何錯誤在我的代碼如何從android中的聯繫人搜索號碼?

我的代碼

searchBtn.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 

      intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
      startActivityForResult(intent,1); 
     } 
    }); 

    @Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == RESULT_OK){ 
     Uri contactData = data.getData(); 
     Cursor cursor = managedQuery(contactData, null, null, null, null); 
     cursor.moveToFirst(); 
     String number = cursor.getString(cursor.getColumnIndexOrThrow 
       (ContactsContract.CommonDataKinds.Phone.NUMBER)); 

     //contactName.setText(name); 
     ephoneNumber.setText(number); 
     //contactEmail.setText(email); 
    } 
} 
+0

您編寫的代碼是聯繫人選擇器。這會將您帶到聯繫人應用並允許您選擇可在您的應用中使用的聯繫人 –

+0

它不會搜索任何號碼。解釋你試圖達到什麼清楚 –

+0

每當我點擊搜索按鈕它會去我的手機 – Durga

回答

2

您可以使用ContentResolver做到這一點。調用此方法來獲取contact名稱:

public String getContactDisplayNameByNumber(String number) { 
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
String name = "?"; 

ContentResolver contentResolver = getContentResolver(); 
Cursor contactLookup = contentResolver.query(uri, new String[] {BaseColumns._ID, 
     ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null); 

try { 
    if (contactLookup != null && contactLookup.getCount() > 0) { 
     contactLookup.moveToNext(); 
     name = contactLookup.getString(contactLookup.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); 
     //String contactId = contactLookup.getString(contactLookup.getColumnIndex(BaseColumns._ID)); 
    } 
} finally { 
    if (contactLookup != null) { 
     contactLookup.close(); 
    } 
} 

return name; 
} 

這種方法將聯繫人列表返回所需數量的名稱。代碼引用這個question

+0

我只希望號碼 – Durga

+0

沒問題,當代碼輸入檢索名稱時,這意味着您的代碼號碼存在於「contacts」中。然後做任何你想要的行動。我認爲你知道如何做這個小修改:) @Durga –

+0

我不明白如何從搜索按鈕調用 – Durga

0

您可以獲取姓名或號碼都

// fetch contact name from phone directory 
    public String fetchNamePhone(String number){ 

     String numberName= null; 

     /// number is the phone number 
     Uri lookupUri =  Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number)); 

     String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };                     

     Cursor c = getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null,null); 

     try { 
      if(c.moveToFirst()){ 

       return number; 
       // numberName =  c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
      } 
      else{ 
       number = ""; 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

     return number; 
    } 

調用此功能後,您將檢查number.length如果大於1張,則數可數,否則無法使用

相關問題