2014-02-27 2 views
-1

연락처에서 전화 번호를 검색하고 해당 연락처를 편집 텍스트에 추가해야한다는 점에서 응용 프로그램을 개발 중입니다. 나는 당신이 할 ContentResolver를 사용하여 내 코드안드로이드에있는 연락처에서 전화 번호를 찾는 방법은 무엇입니까?

내 코드

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

아무 번호도 검색하지 않습니다. 당신은 내가 유 ?? ephoneNumber에의 setText 직전에 검색 버튼이 내 모바일 –

+0

을 달성하려고하는지 설명 .. 거기에 로그를 저장하는 것이 시도 검사. – Durga

답변

2

나에게 어떤 실수를 알려 주시기 바랍니다 연락처로 이동하지만 텍스트를 편집에 추가 할 몇 가지 코드를 썼다. 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

어떤 문제를 싶지, that's는 것을 의미하여 번호가 '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; 
    } 

큰 다음 1 개 다음 번호를 사용할 수있는 경우 호출이 기능 후에는 다른 번호를 사용할 수 없습니다 number.length을 확인합니다

관련 문제