package com.example.android.spreadsheet.sample; import android.accounts.Account; import android.accounts.AccountManager; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; import com.android.volley.AuthFailureError; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.Volley; import com.github.spreadsheets.android.api.model.SpreadsheetFeed; import com.github.spreadsheets.android.api.oauth.SpreadsheetOAuth; import com.github.spreadsheets.android.api.oauth.SpreadsheetOAuthActivity; import com.github.spreadsheets.android.api.requests.SpreadsheetFeedRequest; import com.google.android.gms.auth.GoogleAuthUtil; public class MainActivity extends ActionBarActivity implements View.OnClickListener { private static final int REQUEST_CODE_OAUTH_ACTIVITY = 103; private AccountManager mAccountManager; private Spinner mAccountTypesSpinner; private String[] mNamesArray; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // String saad; // SpreadsheetOAuth.setAuthToken("saad"); // try { // saad = SpreadsheetOAuth.getAuthToken(); // } catch (AuthFailureError authFailureError) { // authFailureError.printStackTrace(); // } final Button btnGetAccess = (Button) findViewById(R.id.btn_oauth); btnGetAccess.setOnClickListener(this); mNamesArray = getAccountNames(); mAccountTypesSpinner = initializeSpinner( R.id.accounts_tester_account_types_spinner, mNamesArray); } private Response.Listener<SpreadsheetFeed> getSuccessListener() { return new Response.Listener<SpreadsheetFeed>() { @Override public void onResponse(SpreadsheetFeed response) { Toast.makeText(MainActivity.this, "Request successful", Toast.LENGTH_LONG).show(); } }; } private Response.ErrorListener getErrorListener() { return new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("TAG", error.getMessage()); Toast.makeText(MainActivity.this, "Request failed", Toast.LENGTH_LONG).show(); } }; } private Spinner initializeSpinner(int id, String[] values) { ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, values); Spinner spinner = (Spinner) findViewById(id); spinner.setAdapter(adapter); return spinner; } private String[] getAccountNames() { mAccountManager = AccountManager.get(this); Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); String[] names = new String[accounts.length]; for (int i = 0; i < names.length; i++) { names[i] = accounts[i].name; } return names; } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_oauth: int accountIndex = mAccountTypesSpinner.getSelectedItemPosition(); if (accountIndex < 0) { // this happens when the sample is run in an emulator which has no google account // added yet. Toast.makeText(this, "No account available. Please add an account to the phone first.", Toast.LENGTH_LONG).show(); return; } getToken(mNamesArray[accountIndex]); break; } } private void getToken(final String email) { final Intent intent = new Intent(this, SpreadsheetOAuthActivity.class); intent.putExtra(SpreadsheetOAuthActivity.EXTRA_EMAIL, email); intent.putExtra(SpreadsheetOAuthActivity.EXTRA_SCOPE, SpreadsheetOAuth.READ_WRITE_SCOPE); startActivityForResult(intent, REQUEST_CODE_OAUTH_ACTIVITY); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_OAUTH_ACTIVITY) { switch (resultCode) { case RESULT_OK: useToken(data.getStringExtra(SpreadsheetOAuthActivity.EXTRA_TOKEN)); break; case RESULT_CANCELED: String msg = data.getStringExtra(SpreadsheetOAuthActivity.EXTRA_RESULT_MESSAGE); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show(); break; } return; } super.onActivityResult(requestCode, resultCode, data); } private void useToken(String token) { SpreadsheetOAuth.setAuthToken(token); RequestQueue mRequestQueue = Volley.newRequestQueue(this); SpreadsheetFeedRequest mRequest = new SpreadsheetFeedRequest(getSuccessListener(), getErrorListener()); mRequestQueue.add(mRequest); } }