package com.redditandroiddevelopers.googletasksclient; import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import android.preference.PreferenceManager; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.google.api.client.extensions.android2.AndroidHttp; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.json.JsonHttpRequest; import com.google.api.client.http.json.JsonHttpRequestInitializer; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson.JacksonFactory; import com.google.api.services.tasks.TasksRequest; import com.google.api.services.tasks.model.Task; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; public class AddTaskActivity extends SherlockActivity{ /** Logging level for HTTP requests/responses. */ private static final Level LOGGING_LEVEL = Level.OFF; private static final String TAG = "REDDIT GOOGLE TASKS"; // This must be the exact string, and is a special for alias OAuth 2 scope // "https://www.googleapis.com/auth/tasks" final HttpTransport transport = AndroidHttp.newCompatibleTransport(); final JsonFactory jsonFactory = new JacksonFactory(); GoogleAccountManager accountManager; String accountName; GoogleCredential credential = new GoogleCredential(); com.google.api.services.tasks.Tasks service; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.addtask); service = com.google.api.services.tasks.Tasks.builder(transport, jsonFactory) .setApplicationName("RedditGoogleTasks/1.0") .setHttpRequestInitializer(credential) .setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() { public void initialize(JsonHttpRequest request) throws IOException { TasksRequest tasksRequest = (TasksRequest) request; tasksRequest.setKey(ClientCredentials.KEY); } }) .build(); //get the accountName and authToken from sharedPreferences settings String PREF_ACCOUNT_NAME = settings.getString("accountName", null); String PREF_AUTH_TOKEN = settings.getString("authToken", null); Log.v(TAG, "PREF_ACCOUNT_NAME =" + PREF_ACCOUNT_NAME); Log.v(TAG, "PREF_AUTH_TOKEN =" + PREF_AUTH_TOKEN); accountName = PREF_ACCOUNT_NAME; credential.setAccessToken(PREF_AUTH_TOKEN); Logger.getLogger("com.google.api.client").setLevel(LOGGING_LEVEL); accountManager = new GoogleAccountManager(getApplicationContext()); } @Override public boolean onCreateOptionsMenu(Menu menu) { //add menu items to the action bar. look on onOptionsItemSelected to action code. menu.add(0,0,0,"Save"); menu.add(0,1,0,"Cancel"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case 0: { new addTask().execute(); return true; } case 1: { Toast.makeText(this, "Search selected", Toast.LENGTH_SHORT).show(); return true; } default: return super.onOptionsItemSelected(item); } } //add task module class addTask extends AsyncTask<String, Void, AddTaskActivity> { protected AddTaskActivity doInBackground(String... urls) { final EditText titleText = (EditText) findViewById(R.id.editTitle); final EditText noteText = (EditText) findViewById(R.id.editNote); Task task = new Task(); task.setTitle(titleText.getText().toString()); task.setNotes(noteText.getText().toString()); try { Task result = service.tasks().insert("@default", task).execute(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finish(); return null; } } }