@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_AUTHORIZATION: if (resultCode == Activity.RESULT_OK) { AsyncLoadCalendars.run(this); } else { chooseAccount(); } break; case REQUEST_ACCOUNT_PICKER: if (resultCode == Activity.RESULT_OK && data != null && data.getExtras() != null) { String accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME); if (accountName != null) { credential.setAccountName(accountName); SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putString(PREF_ACCOUNT_NAME, accountName); editor.commit(); AsyncLoadCalendars.run(this); } } break; case ADD_OR_EDIT_CALENDAR_REQUEST: if (resultCode == Activity.RESULT_OK) { Calendar calendar = new Calendar(); calendar.setSummary(data.getStringExtra("summary")); String id = data.getStringExtra("id"); if (id == null) { new AsyncInsertCalendar(this, calendar).execute(); } else { calendar.setId(id); new AsyncUpdateCalendar(this, id, calendar).execute(); } } break; } }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_refresh: AsyncLoadCalendars.run(this); break; case R.id.menu_accounts: chooseAccount(); return true; } return super.onOptionsItemSelected(item); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // enable logging Logger.getLogger("com.google.api.client").setLevel(LOGGING_LEVEL); // view and menu setContentView(R.layout.calendarlist); listView = (ListView) findViewById(R.id.list); registerForContextMenu(listView); // Google Accounts credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR); SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); credential.setAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); // Calendar client client = new com.google.api.services.calendar.Calendar.Builder(transport, jsonFactory, credential) .setApplicationName("Google-CalendarAndroidSample/1.0") .build(); // if we already have an account, go ahead and fetch calendars now if (credential.getAccountName() != null) { AsyncLoadCalendars.run(this); } }