在 Android 上使用 EWS Java API 时出现问题

2023-11-23

我尝试在 Android 应用程序中使用 EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi),但遇到了许多问题。 我下载了源代码,并按照提供的说明在 Eclipse 中编译 EWS Java API。在这些说明中,您被告知下载并 添加以下预先要求的 jar 文件依赖项:

  • commons-codec-1.4.jar
  • commons-httpclient-3.1.jar
  • commons-logging-1.1.1.jar
  • jcifs-1.3.15.jar

我这样做了,并按照构建说明生成了以下 jar 文件:

  • EWSAPI-1.1.0.jar
  • EWSAPIWithJars-1.1.0

接下来,我构建了一个全新的 Android 应用程序,向清单添加了适当的权限,然后将以下源添加到主活动的 OnCreate 中:

ExchangeService service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials("emailaddress", "password");       
service.setCredentials(credentials);

try
{
    service.autodiscoverUrl("emailaddress", this);
}
catch (Exception e)
{       
    e.printStackTrace();
}

我首先尝试使用 EWSAPI-1.1.0.jar 文件作为依赖项来运行此应用程序。当我这样做时,我得到了以下致命错误:

未捕获的处理程序:线程主线程由于未捕获的异常而退出 java.lang.NoClassDefFoundError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager 位于 microsoft.exchange.webservices.data.ExchangeServiceBase。(未知 来源)于 microsoft.exchange.webservices.data.ExchangeServiceBase。(未知 来源)于 microsoft.exchange.webservices.data.ExchangeService。(未知 来源)于 com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:40)

根据我的研究,似乎会生成此错误,因为 Android 附带了 Apache HttpClient 4.0,但它没有出现 不再有 MultiThreadedHttpConnectionManager 类。

如果我删除 EWSAPI-1.1.0.jar,并使用 EWSAPIWithJARS-1.1.0.jar 文件作为依赖项,则会收到以下错误:

VFY:无法解析静态方法 908:Ljavax/xml/stream/XMLOutputFactory; newInstance()Ljavax/xml/stream/XMLOutputFactory; VFY:L 中的死代码 0x0008-006a microsoft/exchange/webservices/data/EwsUtilities;.formatLogMessage (Ljava/lang/String;Ljava/lang/String;) Ljava/lang/String; VFY:无法找到签名中引用的类(Ljavax/xml/stream/XMLStreamWriter;)

然后最终...

致命异常:主要 java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService 位于 microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl(未知 来源)于 microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(未知 来源)于 com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:41)

我这样假设是因为现在我包含了 HttpClient 3.1 jar,它与 Android 库中包含的 HttpClient 4.0 jar 冲突。

我的问题是,是否有一种方法可以让我在 Android 项目中使用 EWS Java API,而无需重写其中引用的部分 HttpClient 3.1 特有的东西在 4.0 中不再存在。


您可以通过执行以下步骤来使用适用于 Android 的微软 EWS api,

  1. 下载 URL 中提供的源代码,http://archive.msdn.microsoft.com/ewsjavaapiEWSJavaAPI_1.1.5.zip

  2. 对上述 api 进行更改,使其适用于 Eclipse 中的 JDK 1.4,例如删除覆盖注释等

  3. 下载以下 URL 中提供的 javax.* 包的源代码,http://www.java2s.com/Code/JarDownload/jsr173/jsr173_1.0_src.jar.zip

  4. 在下面的 URL 中下载 stax api 的源代码,http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip

  5. 将所有源代码保留在 eclipse 中的单个 java 项目下

  6. 打开项目资源管理器并选择以“开头的包javax" 并重命名为您的公司名称,例如:com. Note:Eclipse 将要求更改所有命名上下文,然后单击“确定”。

  7. 将所有 java 源导出到一个 jar 文件。

  8. 然后你就可以在 Android 应用程序中使用该 jar 了,没有任何问题。

我使用了上面解释的相同方法,它在 Android 应用程序中 100% 完美地工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 上使用 EWS Java API 时出现问题 的相关文章

  • Android EditText 和 addTextChangedListener

    我目前正在将数据库管理器移植到 Android 由于性能原因 我喜欢 仅更新已修改的属性 我尝试使用 addTextChangedListener 执行此操作 以便将修改后的条目添加到列表中 但我的程序从未输入其任何方法 EditText
  • Android TelecomManager 中的 addIncomingCall 没有执行任何操作

    我正在尝试使用本机 Android 来电 UI 我有一个连接服务 并且我已经成功注册了一个电话帐户 但在我调用方法 addNewIncomingCall 后什么也没有发生 对我所缺少的有什么想法吗 显现
  • 通过代码在创建时突出显示 ListView 项目

    我想在创建 listView 时突出显示 ListView 的第一行 0 我尝试了不同的方法 就像您在注释代码中看到的那样 但没有任何效果 这很奇怪 因为 OnItemClickListener 中的突出显示工作正常 它通过 xml 选择器
  • 升级到最新支持库后Android JACK编译器错误

    Android Studio 2 2 3 Windows 10 64位 构建工具版本 25 Android Gradle插件版本2 2 3 升级到最新的支持库 从 23 4 0 到 25 1 0 并更改编译版本 从 23 到 25 后 我收
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • Android 中使用黑白 alpha 蒙版的高效位图蒙版

    我想用黑白 alpha 蒙版来掩盖位图 我的蒙版图像是黑白的 黑色区域意味着透明 白色区域意味着不透明 我需要的是 当我使用此蒙版图像来蒙版任何其他图像时 如果蒙版图像的相应区域为黑色 则生成的图像区域应为透明 否则 生成的图像区域应该是不
  • 如何在Android中的DataBinding的ViewModel类中获取R.string

    我目前正在使用databinding对于我的 Android 应用程序项目 我想设置error留言在我的CustomTextView from R string txtOldPassWordError并从另一个名为的类中进行设置ViewMo
  • 自动删除 Firebase 通知

    我有一个问题 我都读过让通知在 5 分钟后消失 https stackoverflow com questions 15648699 make notification disappear after 5 minutes and 几秒钟后清
  • 更改语言 Flutter 的按钮

    我正在 Flutter 中构建一个应用程序 到目前为止 我正在使用 JSON 国际化 其中应用程序的语言基于用户手机中默认的语言 它工作得很好 但我想给用户有机会在不更改手机系统语言设置的情况下更改语言 只需单击按钮 然后应用程序即可更改语
  • AndEngine MenuScene - 无法单击按钮

    我有一个关于 android 和 andengine 的小问题 这是我的主菜单的源代码 AbstractScene is extending Scene public class MainMenuScene extends Abstract
  • 双屏 Android Studio 中不显示自动补全

    我刚刚从 Eclipse 切换到 Android Studio IntelliJ 我不明白自动补全是如何工作的 我尝试了 Control Space Control Shift Space 但没有相关建议 不在 Java 文件中 也不在布局
  • Android 操作项上的通知徽章

    我想在操作栏中放置的购物车图像上添加一个通知徽章 并以编程方式操作它 有帮助吗 您可以显示自定义MenuItem on ActionBar通过创建一个custom layout for MenuItem 要设置自定义布局 您必须使用菜单项属
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • Android 中 Activity 之间的 3D 动画

    How to create animation between two Activity look like As Screen shot in android 搜索jazzyviewpager 这是link https github co
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • 调试android数据绑定?

    谁能告诉我如何调试或找到数据绑定生成的代码 从this https www youtube com watch v NBbeQMOcnZ0链接我发现它生成了所需的代码 我猜您正在寻找自动生成的绑定 java 文件 我也在寻找他们 最后我在这
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据
  • 在数组列表中过滤 Filterable 不取消之前的过滤

    我看过过滤器方法文档 其中显示调用过滤器会取消所有先前未执行的过滤请求 并发布一个稍后将执行的新过滤请求 但我收到的实际回调有些不同 在我的实现中 它不会取消先前的过滤器请求并调用publishResults 最近一次搜索条件后的上一次搜索

随机推荐