直升机,
如何使用google calendar api插入新日历?
我尝试了以下代码并使用新的Retrievetask()执行.execute():
class RetrieveTask extends AsyncTask<Void, Void, Void> {
private Exception exception;
@Override
protected Void doInBackground(Void... voids) {
try {
HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
FileDataStoreFactory DATA_STORE_FACTORY = new FileDataStoreFactory(new File(CalendarActivity.this.getFilesDir(), ".credentials/calendar-java-quickstart"));
List<String> SCOPES =
Arrays.asList(CalendarScopes.CALENDAR);
JsonFactory JSON_FACTORY =
JacksonFactory.getDefaultInstance();
InputStream in =
Events.class.getResourceAsStream("/client_id.json");
GoogleClientSecrets clientSecrets =
GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(DATA_STORE_FACTORY)
.setAccessType("online")
.build();
Credential credential = new AuthorizationCodeInstalledApp(
flow, new LocalServerReceiver()).authorize("user");
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
com.google.api.services.calendar.Calendar service = new com.google.api.services.calendar.Calendar.Builder(
transport, jsonFactory, credential)
.setApplicationName("kalender")
.build();
com.google.api.services.calendar.model.Calendar cal = new com.google.api.services.calendar.model.Calendar();
cal.setSummary("test123");
service.calendars().insert(cal);
} catch(Exception e) {
System.out.println("test failed");
e.printStackTrace();
}
return null;
}
}
但是我的应用程序崩溃时出现以下错误(请参阅下面的帖子) .
当我尝试没有Asynctask,然后我得到android.os.NetworkOnMainThreadException .
我究竟做错了什么?
08-23 14:17:13.926 16556-16675 / de.ubik.kalender E / AndroidRuntime:FATAL EXCEPTION:AsyncTask#2进程:de.ubik.kalender,PID:16556 java.lang.RuntimeException:执行时发生错误do.Background()在android.os.AsyncTask $ 3.done(AsyncTask.java:318)java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)java.util.concurrent.FutureTask.setException(FutureTask.java) :223)at java.util.concurrent.FutureTask.run(FutureTask.java:242)at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor) .java:1133)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)at java.lang.Thread.run(Thread.java:761)引起:java.lang.NoClassDefFoundError:解析失败作者:Ljava / awt / Desktop;在com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.browse(AuthorizationCodeInstalledApp.java:127)在com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.onAuthorization(AuthorizationCodeInstalledApp . Java的:111)在com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:79)在de.ubik.kalender.CalendarActivity $ RetrieveFeedTask.doInBackground(CalendarActivity.java:199) at de.ubik.kalender.CalendarActivity $ RetrieveFeedTask.doInBackground(CalendarActivity.java:171)at android.os.AsyncTask $ 2.call(AsyncTask.java:304)at java.util.concurrent.FutureTask.run(FutureTask.java: 237)在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)at java.util.concurrent.ThreadPoolExecutor $ Worker.run( ThreadPoolExecutor.java:607)在java.lang.Thread.run(Thread.java:761)引起:java.lang . ClassNotFoundException:在路径上找不到类“java.awt.Desktop”:DexPathList [[zip文件“/data/app/de.ubik.kalender-1/base.apk”,zip文件“/ data / app / de .ubik.kalender-1 / split_lib_dependencies_apk.apk “zip文件 ”/data/app/de.ubik.kalender-1/split_lib_slice_0_apk.apk“,zip文件” /data/app/de.ubik.kalender-1/split_lib_slice_1_apk .apk“,zip文件”/data/app/de.ubik.kalender-1/split_lib_slice_2_apk.apk“,zip文件”/data/app/de.ubik.kalender-1/split_lib_slice_3_apk.apk“,zip文件”/ data / app / de.ubik.kalender-1 / split_lib_slice_4_apk.apk“,zip文件”/data/app/de.ubik.kalender-1/split_lib_slice_5_apk.apk“,zip文件”/data/app/de.ubik . KALENDER-1 / split_lib_slice_6_apk.apk”,zip文件 “/data/app/de.ubik.kalender-1/split_lib_slice_7_apk.apk”,zip文件 “/data/app/de.ubik.kalender-1/split_lib_slice_8_apk.apk” ,zip文件“/data/app/de.ubik.kalender-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/de.ubik.kalender-1/lib/x86,/ system / lib,/ vendor / lib]]在dalvik.system.BaseDexClassLoade r.findClass(BaseDexClassLoader.java:56)位于com.google.api.client.extensions的java.lang.ClassLoader.loadClass(ClassLoader.java:380)java.lang.ClassLoader.loadClass(ClassLoader.java:312) .java6.auth.oauth2.AuthorizationCodeInstalledApp.browse(AuthorizationCodeInstalledApp.java:127)在com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.onAuthorization(AuthorizationCodeInstalledApp.java:111)在com.google.api .client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:79)在de.ubik.kalender.CalendarActivity $ RetrieveFeedTask.doInBackground(CalendarActivity.java:199)在de.ubik.kalender.CalendarActivity $ RetrieveFeedTask .doInBackground(CalendarActivity.java:171)at android.os.AsyncTask $ 2.call(AsyncTask.java:304)at java.util.concurrent.FutureTask.run(FutureTask.java:237)at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.ja) va:1133)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)at java.lang.Thread.run(Thread.java:761)
我究竟做错了什么