2013-03-13 65 views
1

我試圖建立一個應用程序,只有電子郵件地址的電話聯繫人必須顯示給用戶。當用戶點擊我的應用程序中的編輯框,電話聯繫人只與電子郵件地址必須被顯示,在用戶選擇一個聯繫人之後,該聯繫人的電子郵件地址必須被髮回到我的應用程序,我在應用程序中進一步使用它。顯示只有在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 2013-08-03 14:57:01

回答

-2

把下面的代碼放在監聽器中,希望這有助於。

代碼

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

通過使用這個溶膠我們可以避免錯誤,但它不是完整的解決方案。 – KCRaju 2013-08-03 15:02:09

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); 

然後從採摘取得聯繫的電子郵件地址做有意義的事情。

相關問題