Android Send Mail:禁用默认电子邮件编辑器中的编辑

时间:2013-03-07 06:21:26

标签: android android-intent

我正在开发一个应用程序。我从我的应用程序发送电子邮件。我正在使用代码将邮件发送为:

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { too });  
emailIntent.putExtra(Intent.EXTRA_SUBJECT, sub);  

emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_TEXT, body);  

startActivity(Intent.createChooser(emailIntent, "Choose Email Clients..."));

通过使用此代码,我可以发送电子邮件。由于可以访问默认邮件编辑器。

我的问题是:用户无法在默认作曲家(正文,主题和字段)中编辑应用程序。但是作曲家字段是可编辑的。那么如何使可编辑的错误。

我的整个数据作为邮件正文,主题以及将要发送给谁的数据来自数据库。用户无权更改或修改它。

我在Google上搜索并获得了一些代码,这些代码在不使用意图的情况下发送电子邮件,这让我觉得很复杂。链接为here

我按照链接中给出的步骤得到错误,如:

03-07 18:06:05.750: D/dalvikvm(12734): GC_CONCURRENT freed 303K, 53% free 2699K/5639K, external 141K/518K, paused 3ms+2ms
03-07 18:06:26.430: E/MailApp(12734): Could not send email
03-07 18:06:26.430: E/MailApp(12734): javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
03-07 18:06:26.430: E/MailApp(12734):   nested exception is:
03-07 18:06:26.430: E/MailApp(12734):   java.net.SocketException: Host is unresolved: smtp.gmail.com
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:310)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:169)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:118)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Transport.send0(Transport.java:188)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Transport.send(Transport.java:118)
03-07 18:06:26.430: E/MailApp(12734):   at com.ocs.sendmailcustom.Mail.send(Mail.java:104)
03-07 18:06:26.430: E/MailApp(12734):   at com.ocs.sendmailcustom.Main$1.onClick(Main.java:31)
03-07 18:06:26.430: E/MailApp(12734):   at android.view.View.performClick(View.java:2538)
03-07 18:06:26.430: E/MailApp(12734):   at android.view.View$PerformClick.run(View.java:9152)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Handler.handleCallback(Handler.java:587)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Looper.loop(Looper.java:123)
03-07 18:06:26.430: E/MailApp(12734):   at  android.app.ActivityThread.main(ActivityThread.java:3691)
03-07 18:06:26.430: E/MailApp(12734):   at  java.lang.reflect.Method.invokeNative(Native Method)
03-07 18:06:26.430: E/MailApp(12734):   at java.lang.reflect.Method.invoke(Method.java:507)
03-07 18:06:26.430: E/MailApp(12734):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
03-07 18:06:26.430: E/MailApp(12734):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
03-07 18:06:26.430: E/MailApp(12734):   at dalvik.system.NativeStart.main(Native Method)
03-07 18:06:26.430: E/MailApp(12734): Caused by: java.net.SocketException: Host is unresolved: smtp.gmail.com
03-07 18:06:26.430: E/MailApp(12734):   at java.net.Socket.connect(Socket.java:985)
03-07 18:06:26.430: E/MailApp(12734):   at java.net.Socket.connect(Socket.java:945)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:163)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
03-07 18:06:26.430: E/MailApp(12734):   ... 19 more

我在设备上运行应用程序时遇到此错误,如SAMSUNG galaxy s2。

但它在LG optimus E400上成功运行。

那么我应该做什么或按照步骤来完成任务。或者是否有办法无意地发送邮件。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。因为这是一个我忘记注意的愚蠢错误。由于我的LG设备在GPRS网络中使用,而我的三星设备在WI-FI上。

所以我只是在androidmenifest文件中包含WI-FI的许可:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

添加此权限后,我可以发送来自intent的邮件以及link中给出的代码,这是自定义电子邮件发送的意图。

希望这篇文章有助于为所有人开发电子邮件发送应用程序。