直升机,

如何使用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)

我究竟做错了什么