2012-08-25 4 views
0

입력 상자에서 연락처를 가져 오는 대화 상자가 표시됩니다. 내 코드는 다음과 같습니다.연락처 피커가 결과를 반환하지 않습니다.

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toContacts = (EditText)findViewById(R.id.To); 
     toContacts.setOnClickListener(new EditText.OnClickListener(){public void onClick(View v){pickContacts();}}); 

    } 

    public void pickContacts(){ 
     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
     startActivityForResult(intent, 1); 
    } 

    public void onActivityResult(int reqCode, int resultCode, Intent data){ 
     super.onActivityResult(reqCode, resultCode, data); 
     String name = ""; 
      switch (reqCode) { 
      case (1) : 
       if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       //@SuppressWarnings("deprecation") 
       Cursor c = null; 
       try{ 
        //c = managedQuery(contactData, null, null, null, null); 
        c = getContentResolver().query(contactData, null, Contacts.DISPLAY_NAME, null, null); 
        if (c.moveToFirst()) { 
          name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
          //String number = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

         } 
       } catch(Exception e){ 
        Log.e(DEBUG_TAG, "failed to get contacts data", e); 
       } finally { 
        if(c != null){ 
         c.close(); 
        } 
        EditText toSendContact = (EditText) findViewById(R.id.To); 
        toSendContact.setText(name); 
       } 
       } 
       break; 
      } 

    } 

그러나 입력 된 결과가 입력 상자에 다시 표시되지 않습니다.

답변

0

당신은 선택을 사용하는 대신에 투사 한

c = getContentResolver().query(contactData, new String[] { ContactsContract.Contacts.DISPLAY_NAME }, null, null, null); 

c = getContentResolver().query(contactData, null, Contacts.DISPLAY_NAME, null, null); 

를 교체합니다.

관련 문제