Intereting Posts
Потоковая передача Android MediaPlayer останавливается при изменении сети SwipeyTabs – как создать Swipey Tabs с помощью библиотеки ActionBarSherlock? Разработка Python SL4A Как установить несколько аварийных сигналов с помощью диспетчера аварийных сигналов Android Как Google достигает анимированных сообщений в своем приложении G +? Javax.net.ssl.SSLException: Ошибка чтения: ssl = 0x9524b800: ошибка ввода-вывода во время системного вызова, сброс соединения с помощью одноранговой сети Экран браузера браузера Android, screen.height & window.innerWidth & window.innerHeight ненадежны Android: StaggeredGridLayoutManager прокручивает вверх до конца при инициализации Android SDK Build Tool Несколько версий Как выполнить проверку подлинности HTTP в android? Не нашел класс по пути: dexpathlist Не удалось получить неизвестное свойство 'assembleRelease' при использовании gradle 2.14.1 Добавить зависимости через gradle для затмения в проекте android OnBind () никогда не вызывается в службе Есть ли список того, какое устройство имеет то, что отделяет dpi и размер экрана?

Проблемы с использованием API Java EWS на Android

Я пытаюсь использовать EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi) в приложении для Android и столкнулся с рядом проблем. Я загрузил источник и выполнил инструкции, предоставленные для компиляции Java API EWS в Eclipse. В этих инструкциях вам предлагается загрузить и добавить следующие зависимые файлы jar-файла:

  • Обще-кодек-1.4.jar
  • Обще-HttpClient-3.1.jar
  • Обще-каротаж 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 в качестве зависимости. Когда я это сделал, я получил следующую фатальную ошибку:

Неактивный обработчик: поток main из-за непонятого исключения 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 / поток / XMLOutputFactory; VFY: мертвый код 0x0008-006a в L microsoft / exchange / webservices / data / EwsUtilities; .formatLogMessage (Ljava / lang / String; Ljava / lang / String;) Ljava / lang / String; VFY: невозможно найти класс, на который ссылается подпись (Ljavax / xml / stream / XMLStreamWriter;)

И потом …

FATAL EXCEPTION: main java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService at microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl (Неизвестный источник) в microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl (Неизвестный источник ) На com.meshin.exchange.ExchangeDiscoveryActivity.onCreate (ExchangeDiscoveryActivity.java:41)

Я предполагаю, потому что теперь я включаю банку HttpClient 3.1 и конфликтует с банком HttpClient 4.0, включенным в библиотеки Android.

Мой вопрос заключается в том, есть ли у меня возможность использовать EWS Java API в проекте Android, не переписывая его части, которые ссылаются на специфические для HttpClient 3.1 вещи, которые больше не находятся в 4.0.

Solutions Collecting From Web of "Проблемы с использованием API Java EWS на Android"

Вы можете использовать microsoft EWS api для android, выполнив следующие шаги,

  1. Скачать исходный код, доступный в URL-адресе, http://archive.msdn.microsoft.com/ewsjavaapi EWSJavaAPI_1.1.5.zip

  2. Внесите изменения в api для работы над JDK 1.4 в eclipse, например, удалите аннотации переопределения и т. Д.

  3. Загрузите исходный код пакета javax. *, Доступный по ссылке ниже, http://www.java2s.com/Code/JarDownload/jsr173/jsr173_1.0_src.jar.zip

  4. Загрузите исходный код stax api, доступный в URL ниже, http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip

  5. Хранить все источники в рамках одного проекта java в eclipse

  6. Откройте проводник проекта и выберите пакет, который начинается с « javax » и переименуйте название вашей компании, например: com . Примечание. Eclipse будет запрашивать, чтобы все контексты именования изменились, затем нажмите «ОК».

  7. Экспортируйте все источники java в один файл jar.

  8. Тогда вам будет полезно использовать банку в приложении Android без каких-либо проблем.

Я использовал тот же способ, описанный выше, и он отлично работал в андроидном приложении на 100%.

Это не очень полезный ответ, но я также пытаюсь взглянуть на API EWS за последние пару недель, без успеха. Основная проблема, которую я нашел, – это ссылки на многие API-интерфейсы javax, которые не находятся на Android. Есть хак, который вы можете найти, что объясняет, как «переклассировать» их, но у меня пока нет работы; Кроме того, DnsClient ссылается на некоторые пространства имен, которые jarsearches возвращают только для rt.jar – основного времени выполнения. И в том числе в Android-приложении просто сумасшествие!

Прежде чем найти API, я пытался использовать KSOAP для связи с EWS, но снова столкнулся с проблемами – вам нужно иметь возможность делать NTLM и SSL, и я не мог найти никакого способа объединить все это с KSOAP любым простым способом.

API EWS выглядит так, как нужно (зачем изобретать колесо), но заставить его работать на Android выглядит очень сложно (если не невозможно)

Пожалуйста, проверьте эту библиотеку для решения