Обмен веб-служб на Android, ошибка
Я пытаюсь реализовать и использовать веб-службы Exchange на Android. Я нашел этот пост и продолжаю в том же духе, установив Microsoft EWS API JAVA:
http://stackru.com/questions/7476055/use-exchange-web-services-on-android
Я написал и выполнил простой пример, который отправляет сообщение. Но я получил эту ошибку:
java.lang.VerifyError: microsoft.exchange.webservices.data.ExchangeServiceBase
Кто-нибудь может мне помочь? Есть ли образец, которым кто-нибудь может поделиться? Спасибо!
Это образец:
package com.example.ewsandroid;
import java.net.URI;
import java.util.Locale;
import microsoft.exchange.webservices.data.EmailMessage;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.MessageBody;
import microsoft.exchange.webservices.data.WebCredentials;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Locale.setDefault(Locale.ENGLISH);
try {
ExchangeService service = new ExchangeService();
WebCredentials webCredentials = new WebCredentials(
"sample@gmail.com",
"sample");
URI url = new URI("https://sample.sample.com/ews/Exchange.asmx");
service.setCredentials(webCredentials);
service.setUrl(url);
EmailMessage msg= new EmailMessage(service);
msg.setSubject("Hello world!");
msg.setBody(MessageBody.getMessageBodyFromText
("Sent using the EWS Managed API."));
msg.getToRecipients().add("sample@gmail.com");
msg.send();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
});
}
}
Я использую Android 2.2 в качестве платформы, Java Compiler 1.6
1 ответ
Доступна коммерческая библиотека ActiveSync @ JWebServices для Java и Android. Загрузите JWebServices for Exchange на этой странице. После загрузки просто добавьте jar-файл jwebservices-1.1.jar в ваш проект, и вам просто нужно будет предоставить информацию при создании объекта Service в коде ur, как показано ниже. Это работало в моем приложении для Android.
Service service = new Service(
"https://mail.yourdomain.com/ews/Exchange.asmx",
"emailid@yourdomain.com", "password");
Вот пример кода для отображения встреч между текущим временем и следующими 12 часами.
Service service = new Service(
"https://mail.yourdomain.com/ews/Exchange.asmx",
"emailid@yourdomain.com", "password");
Date startDate = new Date(System.currentTimeMillis());
Date endDate = new Date(System.currentTimeMillis()
+ (12 * 60 * 60 * 1000));
CharSequence startTime = DateFormat.format(
"yyyy-MM-dd HH:mm:ss", startDate);
CharSequence endTime = DateFormat.format("yyyy-MM-dd HH:mm:ss",
endDate);
IsGreaterThanOrEqualTo restriction1 = new IsGreaterThanOrEqualTo(
AppointmentPropertyPath.START_TIME,
startTime.toString());
IsLessThanOrEqualTo restriction2 = new IsLessThanOrEqualTo(
AppointmentPropertyPath.END_TIME, endTime.toString());
And restriction3 = new And(restriction1, restriction2);
FindItemResponse response = service.findItem(
StandardFolder.CALENDAR,
AppointmentPropertyPath.getAllPropertyPaths(),
restriction3);
int numberOfItems = response.getItems().size();
if (numberOfItems <= 0)
Log.v(">>><<<<", "There are no Appointments..");
for (int i = 0; i < numberOfItems; i++) {
if (response.getItems().get(i) instanceof Appointment) {
Appointment appointment = (Appointment) response
.getItems().get(i);
String logicalRoomName = null, location = appointment
.getLocation();
Log.v(">>><<<<", "Location = " + location);
Log.v(">>><<<<",
"Subject = " + appointment.getSubject());
Log.v(">>><<<<",
"StartTime = " + appointment.getStartTime());
Log.v(">>><<<<",
"EndTime = " + appointment.getEndTime());
Log.v(">>><<<<",
"Body Preview = "
+ appointment.getBodyPlainText()); } }