我正在尝试编写一个应用程序,该应用程序将通过Android应用程序中的按钮按钮发送自动电子邮件。
我意识到这个问题已被多次询问,但我仍然没有为我的案例找到最终解决方案。
我所遵循的代码示例来自此处:
http://macmaker.blogspot.com/2012/04/send-emails-in-background-in.html
GMailSender类完全相同。 MainActivity类也是如此,除了我使用自己的电子邮件来测试它是否正确发送。
我看过的两个主要问题如下:
Android sending emails java.lang.NoClassDefFoundError: javax.activation.DataHandler
java.lang.NoClassDefFoundError: javax.activation.DataHandler in android
我将所有三个文件(activation.jar,additionnal.jar,mail.jar)作为模块放入我的项目中。这是通过关注此YouTube视频中的示例完成的:
https://www.youtube.com/watch?v=dpuJPoXkFG4
但是,我仍然会收到此错误:
08-25 14:10:24.968 29531-29531/com.example.mailapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.mailapp, PID: 29531
java.lang.NoClassDefFoundError: javax.activation.DataHandler
at com.example.mailapp.GMail.send(GMail.java:103)
at com.example.mailapp.MainActivity$1.onClick(MainActivity.java:33)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我不确定我所关注的YouTube视频中的步骤是否导致其无法正常工作或代码存在问题。
如果您有任何建议,请帮助。
编辑:我还尝试将所有.jar文件放在libs文件夹中,并确保它们位于依赖项下的build.gradle文件中,如下所示:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.0'
compile project(':activation')
compile project(':additionnal')
compile project(':mail')
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
compile files('libs/mail.jar')
}
我通过查看这个问题来做到这一点:
Android Studio: Add jar as library?
但错误仍然存在。
编辑2: 当.jar文件位于我的libs文件夹(以及模块中)时,我可以找到DataHandler类。但是,当我点击它查看它时,屏幕顶部会出现一条消息,上面写着" Decompiled .class文件,字节码版本:48.0(Java 1.4)"
不确定这对此网站上的任何人是否有用。此外,文件被锁定,因为我无法编辑它,这是我所期望的。
答案 0 :(得分:2)
无论出于何种原因,我下载的activation.jar文件第一次都无法正常工作。我一直发现它是Decompiled .class文件,字节码版本:48.0(Java 1.4)
然后我删除了以下链接中的所有文件:
https://code.google.com/p/javamail-android/downloads/list
然后再次重新加载所有这些文件。然后我完成了将它们作为库添加回我的应用程序的整个过程。
现在一切正常,当从activation.jar查看DataHandler类时,它会显示“Decompiled .class file,bytecode version:49.0(Java 5.0)”
我仍然不知道为什么当我第一次下载它时,它没有用,但它现在工作正常。