Android Open Source - spring-for-android-starter-book Google Profile Activity






From Project

Back to project page spring-for-android-starter-book.

License

The source code is released under:

Apache License

If you think the Android project spring-for-android-starter-book listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2012 the original author or authors.
 *//  w w w . j a v  a 2s  .  c o  m
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.dahanne.android.google.client;


import java.net.URL;

import org.springframework.social.ExpiredAuthorizationException;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.google.api.Google;
import org.springframework.social.google.api.legacyprofile.LegacyGoogleProfile;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;

/**
 * This class is based on the FacebookProfileActivity by Roy Clarkson
 */
public class GoogleProfileActivity extends Activity{

  protected static final String TAG = GoogleProfileActivity.class.getSimpleName();

  private ConnectionRepository connectionRepository;

  private Google google;
  
  private ProgressDialog progressDialog;

  private boolean destroyed = false;
  
  private ListView listView;

  private ImageView profilePictureView;
  
  private WebView aboutMeView;
  
  private Bitmap profileBitmap;
  
  private String aboutMe;
  
  
  // ***************************************
  // Activity methods
  // ***************************************
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    setContentView(R.layout.google_profile_layout);
    listView = (ListView) findViewById(R.id.google_profile_list);
    profilePictureView = (ImageView) findViewById(R.id.image_view);
    aboutMeView = (WebView) findViewById(R.id.text_view_about_me);
    
    
    this.google = getApplicationContext().getConnectionRepository().findPrimaryConnection(Google.class)
        .getApi();
    
    this.connectionRepository = getApplicationContext().getConnectionRepository();
  }

  @Override
  public void onStart() {
    super.onStart();
    new FetchProfileTask().execute();
  }

  // ***************************************
  // Private methods
  // ***************************************
  private void showResult(LegacyGoogleProfile googleProfile) {
    if (googleProfile != null) {
      GoogleProfileListAdapter adapter = new GoogleProfileListAdapter(this, googleProfile);
      listView.setAdapter(adapter);
      if(profileBitmap !=null) {
        profilePictureView.setImageBitmap(profileBitmap);
      }
      if (aboutMe != null) {
        aboutMeView.loadData(aboutMe, "text/html", "US-ASCII");
      }
    }
  }
  

  // ***************************************
  // Private classes
  // ***************************************
  private class FetchProfileTask extends AsyncTask<Void, Void, LegacyGoogleProfile> {

    private Exception exception;
    
    @Override
    protected void onPreExecute() {
      showProgressDialog("Fetching profile...");
    }

    @Override
    protected LegacyGoogleProfile doInBackground(Void... params) {
      try {
        LegacyGoogleProfile userProfile = google.userOperations().getUserProfile();
        aboutMe = google.personOperations().getGoogleProfile().getAboutMe();
        profileBitmap = BitmapFactory.decodeStream(new URL(userProfile.getProfilePictureUrl()).openConnection().getInputStream());
        return userProfile;
        
      } catch (ExpiredAuthorizationException e) {
        //the connection has expired, we try to refresh it
        try {
          Connection<Google> primaryConnection = connectionRepository.getPrimaryConnection(Google.class);
          primaryConnection.refresh();
        } catch (Exception e2) {
          Log.e(TAG, e2.getLocalizedMessage(), e2);
          exception = e2;
        }
      } catch (Exception e) {
        Log.e(TAG, e.getLocalizedMessage(), e);
        exception = e;
      }
      return null;
    }

    @Override
    protected void onPostExecute(LegacyGoogleProfile profile) {
      dismissProgressDialog();
      if(profile != null) {
        showResult(profile);
      } else if (exception != null) {
        Toast.makeText(GoogleProfileActivity.this, "Something went wrong while fetching the profile : " + exception.getMessage(), Toast.LENGTH_LONG).show();
      }
    }

  }


  // ***************************************
  // Activity methods
  // ***************************************
  @Override
  public MainApplication getApplicationContext() {
    return (MainApplication) super.getApplicationContext();
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    this.destroyed = true;
  }

  // ***************************************
  // Public methods
  // ***************************************
  public void showLoadingProgressDialog() {
    this.showProgressDialog("Loading. Please wait...");
  }

  public void showProgressDialog(CharSequence message) {
    if (this.progressDialog == null) {
      this.progressDialog = new ProgressDialog(this);
      this.progressDialog.setIndeterminate(true);
    }

    this.progressDialog.setMessage(message);
    this.progressDialog.show();
  }

  public void dismissProgressDialog() {
    if (this.progressDialog != null && !this.destroyed) {
      this.progressDialog.dismiss();
    }
  }
  

}




Java Source Code List

net.dahanne.android.google.client.AbstractAsyncActivity.java
net.dahanne.android.google.client.AbstractAsyncListActivity.java
net.dahanne.android.google.client.AbstractWebViewActivity.java
net.dahanne.android.google.client.AsyncActivity.java
net.dahanne.android.google.client.GoogleActivity.java
net.dahanne.android.google.client.GoogleProfileActivity.java
net.dahanne.android.google.client.GoogleProfileListAdapter.java
net.dahanne.android.google.client.GoogleWebOAuthActivity.java
net.dahanne.android.google.client.MainApplication.java
net.dahanne.spring.android.ch3.gzip.IfConfigMeJson.java
net.dahanne.spring.android.ch3.gzip.MainActivity.java
net.dahanne.spring.android.ch3.http.basic.authentication.MainActivity.java
net.dahanne.spring.android.ch3.message.converters.feedreader.MainActivity.java
net.dahanne.spring.android.ch3.message.converters.jackson.IfConfigMeJson.java
net.dahanne.spring.android.ch3.message.converters.jackson.IfConfigMeJson.java
net.dahanne.spring.android.ch3.message.converters.jackson.IfConfigMeRestClient.java
net.dahanne.spring.android.ch3.message.converters.jackson.IfConfigMeRestClient_.java
net.dahanne.spring.android.ch3.message.converters.jackson.MainActivity.java
net.dahanne.spring.android.ch3.message.converters.jackson.MainActivity.java
net.dahanne.spring.android.ch3.message.converters.jackson.MainActivity_.java
net.dahanne.spring.android.ch3.message.converters.simplexml.IfConfigMeXml.java
net.dahanne.spring.android.ch3.message.converters.simplexml.MainActivity.java
net.dahanne.spring.android.ch3.restful.example.recipeapp.DishType.java
net.dahanne.spring.android.ch3.restful.example.recipeapp.RecipeAbstractAsyncTask.java
net.dahanne.spring.android.ch3.restful.example.recipeapp.RecipeEditor.java
net.dahanne.spring.android.ch3.restful.example.recipeapp.Recipe.java
net.dahanne.spring.android.ch3.restful.example.recipeapp.RecipesList.java
net.dahanne.spring.android.firstexample.MainActivity.java
net.dahanne.spring.android.firstexample.MainActivity.java