2016-07-07 136 views
0

每當我的應用程序嘗試發送意圖來郵寄任何郵件應用程序時,它就會崩潰。 有人可以幫我解決這個問題嗎?應用程序在發送意圖到郵件應用程序時崩潰

下面是意圖我的XML代碼:

Intent intent = new Intent(Intent.ACTION_SENDTO); 
    intent.setData(Uri.parse("mailto:")); 
    intent.setType("*/*"); 
    intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "My Coffee Order"); 
    intent.putExtra(Intent.EXTRA_TEXT, priceMessage); 
    startActivity(intent); 

該應用程序在日誌文件中給出錯誤消息是:

07-07 17:48:25.504 22490-22490/com.example.android.justjava E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.android.justjava, PID: 22490 
                      java.lang.IllegalStateException: Could not execute method for android:onClick 
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                       at android.view.View.performClick(View.java:4848) 
                       at android.view.View$PerformClick.run(View.java:20262) 
                       at android.os.Handler.handleCallback(Handler.java:815) 
                       at android.os.Handler.dispatchMessage(Handler.java:104) 
                       at android.os.Looper.loop(Looper.java:194) 
                       at android.app.ActivityThread.main(ActivityThread.java:5649) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
                      Caused by: java.lang.reflect.InvocationTargetException 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                       at android.view.View.performClick(View.java:4848) 
                       at android.view.View$PerformClick.run(View.java:20262) 
                       at android.os.Handler.handleCallback(Handler.java:815) 
                       at android.os.Handler.dispatchMessage(Handler.java:104) 
                       at android.os.Looper.loop(Looper.java:194) 
                       at android.app.ActivityThread.main(ActivityThread.java:5649) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
                      Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=*/* (has extras) } 
                       at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1792) 
                       at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) 
                       at android.app.Activity.startActivityForResult(Activity.java:3810) 
                       at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48) 
                       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75) 
                       at android.app.Activity.startActivityForResult(Activity.java:3761) 
                       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871) 
                       at android.app.Activity.startActivity(Activity.java:4091) 
                       at android.app.Activity.startActivity(Activity.java:4059) 
                       at com.example.android.justjava.MainActivity.submitOrder(MainActivity.java:65) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                       at android.view.View.performClick(View.java:4848) 
                       at android.view.View$PerformClick.run(View.java:20262) 
                       at android.os.Handler.handleCallback(Handler.java:815) 
                       at android.os.Handler.dispatchMessage(Handler.java:104) 
                       at android.os.Looper.loop(Looper.java:194) 
                       at android.app.ActivityThread.main(ActivityThread.java:5649) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 
+0

發佈您的xml文件和onClick方法 –

+0

你檢查了我的答案嗎? – Nitesh

回答

0

setType()消除您在setData()中輸入的值。相反,結合:

intent.setData(Uri.parse("mailto:")); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 

到:

intent.setDataAndType(Uri.parse("mailto:[email protected]"), "text/plain"); 

(與實際MIME類型的內容,你在priceMessage必須更換text/plain

0

添加活動到您的清單是這樣的:

<activity android:name=".AppPreferenceActivity" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="com.scytec.datamobile.vd.gui.android.AppPreferenceActivity" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
    </activity> 
+0

顯示完整的代碼。可能你的onclick事件不正確。 – Drv

+0

@Drv你想要什麼? – Ironman

0

這意味着Android系統的犯規中的任何電子郵件發送活動來處理您創建的意圖。確保您的設備中安裝了電子郵件應用程序。

還可以使用下面的代碼只是張貼了這個問題後,發送電子郵件,

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("message/rfc822"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email"); 
i.putExtra(Intent.EXTRA_TEXT , "body of email"); 
try { 
startActivity(Intent.createChooser(i, "Send mail")); 
} catch (android.content.ActivityNotFoundException ex) { 
Toast.makeText(MyActivity.this, "There are no email applications installed.", Toast.LENGTH_SHORT).show(); 
} 
0

我ASLO想通了。

我發現,當我看到線

intent.setData(Uri.parse("mailto:")); 
intent.setType("*/*"); 

然後我刪除: -

intent.setType("*/*"); 

然後一切都很好。