2013-03-13 8 views
1

이메일 주소가있는 휴대 전화 연락처가 사용자에게 표시되어야하는 앱을 만들려고합니다. 내 앱에서 사용자가 editbox를 클릭하면 이메일에만 연락처로 전화합니다. 주소가 표시되어야하는 경우 사용자가 연락처를 선택한 후에 해당 연락처의 이메일 주소를 내 앱으로 다시 보내야합니다.이 이메일 주소는 내 앱에서 더 사용합니다.이메일 주소가있는 연락처를 android에만 표시합니다.

는 //이 onActivityResult를() 메소드에서 내 코드입니다

  try 
      { 

       Uri result = data.getData(); 
       String id = result.getLastPathSegment(); 
       cursor = getContentResolver().query(Email.CONTENT_URI, null, Email.CONTACT_ID + "=?", new String[] { id }, null); 
       emailIdx = cursor.getColumnIndex(Email.DATA); 

       if (cursor.moveToFirst()) 
       { 
        while (cursor.isAfterLast() == false) 
        { 
         emailid = cursor.getString(emailIdx); 

         allids.add(emailid); 
         cursor.moveToNext(); 
        } 
       } 

       else 
       { 
        //no results actions 
       } 
      } 

//이 내가 전달하고 의도이다.

Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); 
       intent.setType(ContactsContract.CommonDataKinds.Email.ADDRESS); 

        startActivityForResult(intent, 1); 

// 명시 적 권한.

  <uses-permission android:name="android.permission.READ_CONTACTS" /> 
      <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 


      <intent-filter> 

      <action android:name="android.intent.action.PICK" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="vnd.android.cursor.dir/email_v2" /> 
      <data android:mimeType="vnd.android.cursor.item/email_v2" /> 

      </intent-filter> 

내 앱을 실행하려고하면 아래 오류가 표시됩니다.

android.content.ActivityNotFoundException: No Activity found to handle Intent {act=android.intent.action.PICK typ=data1 }   

무엇이 문제가 될지 잘 모르겠습니다. manifest.xml에 누락 된 것이 있습니까?

감사합니다.

+0

위 문제에 대한 해결책이 있습니까? 나는 또한 동일한 문제를 겪고있다. 우리가 아래의 솔루션을 사용한다면 그것은 모든 연락처를 모바일에 표시 할 것이다. – KCRaju

답변

-2

청취자에게 아래 코드를 입력하면 도움이되기를 바랍니다.

코드

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

이 솔을 사용하여 오류를 피할 수 있지만 완전한 해결책은 아닙니다. – KCRaju

0

이 지금 아주 오래된하지만 난 그것을 검색하는 경우 나는 다른 사람들이 너무 너무 여기 내 솔루션 확신합니다.

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

    if(requestCode == RC_GET_EMAIL) { 
     if(resultCode == Activity.RESULT_OK) { 
      Uri contactUri = data.getData(); 
      String[] projection = new String[]{ContactsContract.CommonDataKinds.Email.DATA}; 
      Cursor cursor = getContext().getContentResolver().query(contactUri, projection, null, null, null); 
      if(cursor != null) { 
       if(cursor.moveToFirst()) { 
        int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); 
        String email = cursor.getString(emailIndex); 
        // do something with email 
       } 
       cursor.close(); 
      } 
     } 
    } 
} 

가 산들 바람에 대한 것을 기억하고 당신이 필요합니다 이상 수동하기 위해 READ_CONTACTS 권한을 요청할 수 :

Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType(ContactsContract.CommonDataKinds.Email.CONTENT_TYPE); 
    startActivityForResult(intent, RC_GET_EMAIL); 

는 그 다음 집어 접촉에서 이메일 주소를 얻기 위해 다음과 같이 의도가 시작됩니다 의미있는 일을하십시오.