2012-07-17 23 views
21

我想使用此代碼的郵件數據:「無活動來處理意圖」,同時通過電子郵件發送數據

email = (Button) findViewById(R.id.enail); 
    email.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Intent emailIntent = new Intent(
        android.content.Intent.ACTION_SEND); 
      emailIntent.setAction(Intent.ACTION_SEND); 
      emailIntent.setType("message/rfc822"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
        new String[] { "" }); 
      emailIntent.putExtra(android.content.Intent.EXTRA_CC, ""); 
      emailIntent.putExtra(android.content.Intent.EXTRA_BCC, ""); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        "Playlist Details"); 
      emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail)); 
      emailIntent.setType("text/html"); 
      startActivity(emailIntent); 

     } 
    }); 

但它引發以下錯誤:

07-17 12:31:33.438: E/AndroidRuntime(498): FATAL EXCEPTION: main 
07-17 12:31:33.438: E/AndroidRuntime(498): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND (has extras) } 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Activity.startActivityForResult(Activity.java:2817) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.Activity.startActivity(Activity.java:2923) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.playlist.ViewPlayList$3.onClick(ViewPlayList.java:93) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.view.View.performClick(View.java:2408) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.view.View$PerformClick.run(View.java:8816) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Handler.handleCallback(Handler.java:587) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.os.Looper.loop(Looper.java:123) 
07-17 12:31:33.438: E/AndroidRuntime(498): at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-17 12:31:33.438: E/AndroidRuntime(498): at java.lang.reflect.Method.invokeNative(Native Method) 
07-17 12:31:33.438: E/AndroidRuntime(498): at java.lang.reflect.Method.invoke(Method.java:521) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-17 12:31:33.438: E/AndroidRuntime(498): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-17 12:31:33.438: E/AndroidRuntime(498): at dalvik.system.NativeStart.main(Native Method) 

請幫助我。

+0

您是否有權限? – Abhilasha 2012-07-17 07:15:42

+0

你用什麼操作系統版本來測試,以及你在測試什麼設備? – overbet13 2012-07-17 07:20:38

+0

什麼確切包含'Details'? – overbet13 2012-07-17 07:26:26

回答

12

我在我的設備上測試了這個,代碼完美地工作。我也在模擬器上測試了這個代碼,並且它崩潰了。問題在於操作系統沒有找到任何可以處理這個問題的活動ACTION_SEND。用try/catch隨時圍繞這類代碼,因爲您無法確定是否存在可以處理您的意圖的活動。並嘗試安裝至少一個可以處理ACTION_SEND的應用程序,然後重試,看看它是否適用於您。

+0

是的,它不是錯誤的設備 – 2012-07-17 09:31:19

+0

,而不是圍繞它嘗試抓住,你可以,你應該只是檢查有多少活動可以處理意圖... 例如,你可以這樣做: PackageManager packageManager = getActivity()。getPackageManager(); if(intent.resolveActivity(packageManager)!= null){ //有一個活動可以處理它 } else //沒有任何活動可以處理它:) – Patric 2016-09-22 00:10:55

1

是問題在仿真器,因爲它沒有被配置在模擬器的任何電子郵件, 如果任何人發現這個問題,請在您的模擬器配置電子郵件,進行從應用程序菜單這個

選擇電子郵件,並按照步驟。

4

嘗試使用此更好的練習,向用戶顯示一條消息以設置郵件應用程序。

try{ 

// you email code here 

} catch (ActivityNotFoundException e) { 
// show message to user 
} 
47

調用StartActivity方法以下列方式:

Intent emailIntent = new Intent(
         android.content.Intent.ACTION_SEND); 
       emailIntent.setAction(Intent.ACTION_SEND); 
       emailIntent.setType("message/rfc822"); 
       emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
         new String[] { "" }); 
       emailIntent.putExtra(android.content.Intent.EXTRA_CC, ""); 
       emailIntent.putExtra(android.content.Intent.EXTRA_BCC, ""); 
       emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
         "Playlist Details"); 
       emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail)); 
       emailIntent.setType("text/html"); 

// FOLLOWING STATEMENT CHECKS WHETHER THERE IS ANY APP THAT CAN HANDLE OUR EMAIL INTENT 
startActivity(Intent.createChooser(emailIntent, 
         "Send Email Using: ")); 

如果系統沒有找到任何EAMIL應用程序,一個漂亮的對話框將顯示:

enter image description here


我知道我在回答一個古老的問題,但也許它可以幫助某人。

+0

這是一個很棒的解決方案。謝謝! – wblaschko 2015-04-17 17:49:56

1

發生此異常還有另一個微妙的原因。

我的應用程序在兩種不同的條件下發送電子郵件。一個條件我設置To:字段 - 它需要Intent.ACTION_SENDTO

但Intent.ACTION_SENDTO導致描述的豁免在我的其他條件中:未提供。在這種情況下,Intent.ACTION_SEND是必需的。

相關問題