2013-01-15 41 views
6

我想通過電子郵件發送通過我的應用程序點擊的圖片作爲附件。圖片被點擊,我得到了正確的路徑,但應用程序拋出我一個運行時異常..「沒有找到活動處理意圖」。我正在測試這個在我的設備上,我有我的Gmail帳戶配置。我不知道如何解決這個問題。請幫忙。沒有活動發現處理意圖,而發送電子郵件

這是我的代碼:

public static void sendEmail(Context context, String[] recipientList, String title, String subject, String body) { 

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:[email protected]")); 
     intent.setType("plain/text"); 
     intent.putExtra(android.content.Intent.EXTRA_EMAIL, recipientList); 
     intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
     intent.putExtra(android.content.Intent.EXTRA_TEXT, body); 
     intent.putExtra(Intent.EXTRA_STREAM, capturedImageFilePath); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

} 

這是日誌:

01-15 11:26:04.455: E/AndroidRuntime(9904): FATAL EXCEPTION: main 
01-15 11:26:04.455: E/AndroidRuntime(9904): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=plain/text flg=0x10000000 (has extras) } 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512) 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384) 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at android.app.ContextImpl.startActivity(ContextImpl.java:852) 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at android.content.ContextWrapper.startActivity(ContextWrapper.java:276) 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at com.example.attachmail.AttchmentActivity.sendEmail(AttchmentActivity.java:133) 
01-15 11:26:04.455: E/AndroidRuntime(9904):  at com.example.attachmail.AttchmentActivity$2.onClick(AttchmentActivity.java:93) 
+0

嘗試添加'Intent.FLAG_DEBUG_LOG_RESOLUTION'標誌。它可以幫助你弄清楚。 – kichik

+0

嘗試Intent.FLAG_DEBUG_LOG_RESOLUTION引發以下異常::從Activity上下文外部調用startActivity()需要FLAG_ACTIVITY_NEW_TASK標誌。這真的是你想要的嗎? (Intent.ACTION_SEND); – Nisha

回答

1

嘗試下面的代碼來發送電子郵件。

    Intent sendIntent = new Intent(Intent.ACTION_SEND); 

        sendIntent.setType("message/rfc822"); 
        sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
        sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(path)); 

        sendIntent.putExtra(Intent.EXTRA_TEXT, body); 
        startActivity(Intent.createChooser(sendIntent, "Email:")) 
+0

public static void sendEmail(Context context,String [] recipientList,String title,String subject,String body)\t Intent intent = new Intent(Intent.ACTION_SEND); \t \t intent.setType(「message/rfc822」); \t \t intent.putExtra(android.content.Intent.EXTRA_EMAIL,recipientList); \t \t intent.putExtra(android.content.Intent.EXTRA_SUBJECT,subject); \t \t意圖。putExtra(android.content.Intent.EXTRA_TEXT,body); \t \t intent.putExtra(Intent.EXTRA_STREAM,capturedImageFilePath); \t \t intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); (Intent.createChooser(intent,「Email:」)); \t} – Nisha

+0

上面的代碼拋出了這個異常:android.util.AndroidRuntimeException:從Activity上下文外調用startActivity()需要FLAG_ACTIVITY_NEW_TASK標誌。這真的是你想要的嗎?我不明白我已經設置了該標誌。 – Nisha

+0

剛剛在最後一行使用startActivity(Intent.createChooser(sendIntent,「Email:」) – Priya

0

我認爲你所面對的問題,是因爲您已設置爲「純/文」您已設置i.e.FLAG活性的新任務FLAG的MIME類型。

這是可以幫助你的東西。 試用this鏈接或this鏈接。

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
//  emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailSignature); 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, toSenders); 
     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subjectText); 
     emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, messageText+"\n\n"+emailSignature); 

     emailIntent.setType("image/jpeg"); 
     File bitmapFile = new File(Environment.getExternalStorageDirectory()+ 
      "/"+FOLDER_NAME+"/picture.jpg"); 
     myUri = Uri.fromFile(bitmapFile); 
     emailIntent.putExtra(Intent.EXTRA_STREAM, myUri); 
+0

)我將類型改爲image/jpeg並刪除了該標誌,但它引發了這個異常:從Activity上下文外調用startActivity()需要FLAG_ACTIVITY_NEW_TASK標誌,這真的是你想要的嗎?於是我再次設置了標誌,並試圖只更改內容類型,現在我回到了老無法找到意圖異常。 – Nisha

+0

嘗試「text/plain」並讓我知道發生了什麼:) – AndroidLearner

+0

我最初嘗試過。如果沒有標誌,它會引發我的上下文需要標誌異常,並且它會拋出標誌找不到意圖異常。 :(:( – Nisha

0

剛剛從你的代碼

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

&刪除此行,然後再試一次。

+0

刪除該標誌會引發此異常:從Activity上下文外調用startActivity()需要FLAG_ACTIVITY_NEW_TASK標誌。 – Nisha

0

將Intent.ACTION_SENDTO更改爲Intent.ACTION_SEND。我不希望發送像藍牙等所有這些爲什麼我寫發送到..但無法讓它的工作。所以最後改變它發送,現在它工作得很好。不知道究竟是什麼問題。

11

我有一個類似的問題,我已經傳遞了一個函數的參數發送電子郵件的意圖。 不過,我注意到,我需要用線intent.setData(URI URI),如果電子郵件參數只是電子郵件則需要與「電子郵件地址:」文本 例子:

intent.setData(Uri.parse("mailto:"+email)); 

喜歡這裏:

Intent intent = new Intent(Intent.ACTION_SENDTO); 
        intent.setType("message/rfc822"); 
        intent.putExtra(Intent.EXTRA_EMAIL, email); 
        intent.setData(Uri.parse("mailto:"+email)); 
        intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject); 
        intent.putExtra(Intent.EXTRA_TEXT, emailContent); 
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        intent.addFlags(Intent.FLAG_FROM_BACKGROUND); 
       try { 

        startActivity(intent); 
       } catch (android.content.ActivityNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        Log.d("Email error:",e.toString()); 
       } 

如果你是在模擬器上測試它有可能與「共享」的應用程序未配置的問題,所以無論是一定要設置在模擬器或測試它在實際設備上。

+0

這看起來不像我的解決方案,我仍然得到相同的錯誤。 –

+0

你會得到什麼錯誤? –

+0

'android.content.ActivityNotFoundException:找不到處理Intent {act = android。 intent.action.SENDTO ...' –

相關問題