Android Google日历API Java库-无法解析符号';服务';

Android Google日历API Java库-无法解析符号';服务';,android,Android,我目前正试图弄清楚如何在Android上使用谷歌日历API。我获得了一个授权令牌,现在正在尝试导入日历。现在它告诉我“服务”无法解决,但据我所知,我已经使用Gradle导入了所有库 服务在loadCal函数下使用,使用方式如下: Calendar Calendar=service.calendars().get('pvhs.k12.nj.us_r6jaor04o80hpsaldf17civeio@group.calendar.google.com“).execute()。。。在下面的BUild.

我目前正试图弄清楚如何在Android上使用谷歌日历API。我获得了一个授权令牌,现在正在尝试导入日历。现在它告诉我“服务”无法解决,但据我所知,我已经使用Gradle导入了所有库

服务在loadCal函数下使用,使用方式如下: Calendar Calendar=service.calendars().get('pvhs.k12.nj.us_r6jaor04o80hpsaldf17civeio@group.calendar.google.com“).execute()。。。在下面的BUild.gradle中,您可以看到我导入的所有库。有人知道图书馆服务属于什么吗

MainActivity.Java

package com.pvrhs.calendarapp;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.util.EventLog;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.ActionBar;
import android.app.Dialog;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.TextView;

import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.android.gms.common.AccountPicker;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;

import java.io.IOException;


public class MainActivity extends Activity {

    public static Context context;
    private String namesFor;
    public String works;
    public static final String scope = "https://www.googleapis.com/auth/calendar";
    private String accountName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
        context = getApplicationContext();
        getAccountNames();
    }

    AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... params) {
            String token = null;
            try {
                works = GoogleAuthUtil.getToken(context, namesFor, "oauth2:" + scope);
            } catch (UserRecoverableAuthException e) {
                e.printStackTrace();
            } catch (GoogleAuthException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            loadCal();
            return token;
        }
        @Override
        protected void onPostExecute(String token) {
            TextView textViewToken = (TextView) findViewById(R.id.textView);
            textViewToken.setText("works" + works + namesFor);
        }
    };
    private void getAccountNames(){
        GoogleAccountManager googleAccountManager = new GoogleAccountManager(this);
        Account[] accounts = googleAccountManager.getAccounts();
        namesFor = (accounts[0].name);
        task.execute();
    }
    private void loadCal() {
        Calendar calendar = service.calendars().get('pvhs.k12.nj.us_r6jaor04o80hpsaldf17civeio@group.calendar.google.com').execute();
        Calendar.Events events = service.events().list('pvhs.k12.nj.us_r6jaor04o80hpsaldf17civeio@group.calendar.google.com').setTimeMin("2012-01-01T00:00:00Z").execute();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }

}

您应该将服务添加为类的属性,服务是
com.google.api.services.calendar.calendar
的对象

除此之外,您还应该像这样初始化此属性:

service=Calendar.builder(运输、jsonFactory)
.setApplicationName(“您的应用程序名称”)
.setHttpRequestInitializer(请求初始值设定项)
.build()

请查看以下链接:


您知道json工厂附带的是什么包吗?我尝试过导入com.google.api.client.json.JsonFactory;com.google.api.client.json.JsonGenerator;,com.google.api.client.json.JsonParser;还有com.google.api.client.json.JsonToken,但它仍然没有导入。是的,我知道,jsonFactory是com.google.api.client.json.jackson.JacksonFactory的一个实例。如果您还有更多疑问,请查看我上面回答中提供的链接。是的,您是对的,即使在Google的客户端库中,也有一个包含JacksonFactory的Jackson文件夹,但是当我导入com.Google.api.Client.json.Jackson.JacksonFactory时;进入安卓工作室,我被告知“杰克逊”是一个无法解析的符号。也许是安卓工作室的bug?你是否声明“jackson”是你的类的一个属性?我想我最后的评论可能误导了你。基本上,我导入了com.google.api.client.json.jackson.JacksonFactory,它是在类标记开始之前导入的,并且我得到了一个符号无法解决jackson上面的世界上的错误。
apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    compile 'com.google.apis:google-api-services-calendar:v3-rev75-1.17.0-rc'
    compile 'com.google.api-client:google-api-client-android:1.17.0-rc'
    compile 'com.google.http-client:google-http-client-gson:1.17.0-rc'
    compile 'com.google.apis:google-api-services-oauth2:v2-rev63-1.17.0-rc'
    compile 'com.google.android.gms:play-services:4.2.42'
}