Android 使用javaMail jar包 发送邮件

本文介绍了在Android Studio 1.2环境下,使用javaMail发送邮件遇到的问题及其解决办法,包括NoClassDefFoundError、SecurityException、AsyncTask错误等,并提醒了在使用AsyncTask时需注意的参数问题以及权限设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


使用的 Android Studio 1.2

在Android 中需要使用 javaMail的jar包  mail.jar 、additionnal.jar 、 activation.jar 这三个包 。

导包方法:  直接复制 粘贴到 Module的 libs文件中,然后右击 jar包 选择 Add As Library 点击 即可。

查看 Module是否已导入包: 右击Module 点击Open Module Setting 会出现窗口 在窗口的Dependencies 中查看已导入的jar包

1、提示 java.lang.NoClassDefFoundError: javax.activation.DataHandle

 错误代码 :Transport.send(mailMessage)

当时以为是jar包问题,经过排除 、百度 得出是UI线程的问题。在android4.0中访问网络不能在主程序中进行,需要 另创建一个子线程去执行 网络连接、发送邮件代码。

解决:

 a、使用Thread 创建匿名内部类 在匿名内部类中 执行代码。

 b、 异步线程AsyncTask

这个错误百度了一天,使用子线程才解决。对不上号的错误真恶心


 2、java.lang.SecurityException: ConnectivityService: Neither user 10096 nor current process has android.permission.ACCESS_NETWORK_STATE.

在 使用 ConnectivityManager 查看 网络状态是 出现以上错误, 原因是未设置 网络访问权限。

 解决:在AndroidManifest.xml 中添加 android.permission.ACCESS_NETWORK_STATE  权限即可


 3、 E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #3
    Process: com.yezqjx.myapplication, PID: 7336
    java.lang.RuntimeException: An error occured while executing doInBackground()

产生改错误的可能原因:AsyncTask对象在调用execute() 没有传递有效的数组,其中一个元素是空的。

错误代码:Object[] params = new Object[8];

 当时设置的数组参数 长度为8,多设置了一个。 在改回来后再次运行 则没有出现该错误。。。

只是当我想重新 触发该错误时,把参数长度重新设置 为8 后运行,在 Logcat中竟然找不到该错误。。。。。。



4、E/ActivityThread﹕ Performing stop of activity that is not resumed: {com.miui.home/com.miui.home.launcher.Launcher}
    java.lang.RuntimeException: Performing stop of activity that is not resumed: {com.miui.home/com.miui.home.launcher.Launcher}
            at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3310)
            at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3391)
            at android.app.ActivityThread.access$1100(ActivityThread.java:147)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5233)
            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:904)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

这错误 时有时无,目测应该是 手机系统提示的错误(我用真机调试 小米2s).

com.miui.home.launcher.Launcher:  其中Launcher是 安卓系统中的桌面启动器的意思,出现这错误的原因应该是 未在手机上退出程序 又再次run 引起的


5、java.lang.SecurityException: No permission to write APN settings
            at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:1239)
            at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:821)
            at android.content.ContentProvider.query(ContentProvider.java:984)
            at android.content.ContentProvider$Transport.query(ContentProvider.java:213)
            at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
            at android.os.Binder.execTransact(Binder.java:446)

这位大神的文章应该可以解决, http://blog.youkuaiyun.com/bulkin/article/details/7601609

在Android studio 工程目录中找不到 Android.mk 这个文件。。。



6、在AsyncTask 中的doInBackgroup() 方法 中 使用 该方法的参数,发现参数对象调用toString() 方法的输出结果跟预期不一样。

解决: doInBackgroup() 方法的参数其实是一个数组。。。

.




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值