Exit google plus account not working in android showing null pointer exception

I use Google plus to log in to the Android app running in Good mode.

When you click exit from any other intention. Displays a null pointer exception.

Also click the login button to go to the next .not page on the login page.

but exit the demo application. It works great.

I was looking for relevant answers. No solutions were found that remain the same.

help me solve the problem.

reference 1

reference 2

I referenced 2 links, but exited the following intent, showing a Null pointer exception.

My exit code:

public void googlePlusLogout() { if (mGoogleApiClient.isConnected()) { Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); mGoogleApiClient.disconnect(); mGoogleApiClient.connect(); updateProfile(false); } } 

here is a method call from a different intent for the signin class

otherintent.java

  session.logoutUser();// here i am clearing the shared pref sign_in Signinclass = new sign_in(); Signinclass.googlePlusLogout(); finish(); 

This is my demo code that works great. The same code that I used in my application works fine, but exiting another page does not work. Mapping an exception with a null pointer.

AndroidGooglePlusExample.java

 public class AndroidGooglePlusExample extends Activity implements OnClickListener, ConnectionCallbacks, OnConnectionFailedListener { private static final int RC_SIGN_IN = 0; // Google client to communicate with Google private GoogleApiClient mGoogleApiClient; private boolean mIntentInProgress; private boolean signedInUser; private ConnectionResult mConnectionResult; private SignInButton signinButton; private ImageView image; private TextView username, emailLabel; private LinearLayout profileFrame, signinFrame; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); signinButton = (SignInButton) findViewById(R.id.signin); signinButton.setOnClickListener(this); image = (ImageView) findViewById(R.id.image); username = (TextView) findViewById(R.id.username); emailLabel = (TextView) findViewById(R.id.email); profileFrame = (LinearLayout) findViewById(R.id.profileFrame); signinFrame = (LinearLayout) findViewById(R.id.signinFrame); mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Plus.API, Plus.PlusOptions.builder().build()).addScope(Plus.SCOPE_PLUS_LOGIN).build(); } protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } protected void onStop() { super.onStop(); if (mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } } private void resolveSignInError() { if (mConnectionResult.hasResolution()) { try { mIntentInProgress = true; mConnectionResult.startResolutionForResult(this, RC_SIGN_IN); } catch (SendIntentException e) { mIntentInProgress = false; mGoogleApiClient.connect(); } } } @Override public void onConnectionFailed(ConnectionResult result) { if (!result.hasResolution()) { GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); return; } if (!mIntentInProgress) { // store mConnectionResult mConnectionResult = result; if (signedInUser) { resolveSignInError(); } } } @Override protected void onActivityResult(int requestCode, int responseCode, Intent intent) { switch (requestCode) { case RC_SIGN_IN: if (responseCode == RESULT_OK) { signedInUser = false; } mIntentInProgress = false; if (!mGoogleApiClient.isConnecting()) { mGoogleApiClient.connect(); } break; } } @Override public void onConnected(Bundle arg0) { signedInUser = false; Toast.makeText(this, "Connected", Toast.LENGTH_LONG).show(); getProfileInformation(); } private void updateProfile(boolean isSignedIn) { if (isSignedIn) { signinFrame.setVisibility(View.GONE); profileFrame.setVisibility(View.VISIBLE); } else { signinFrame.setVisibility(View.VISIBLE); profileFrame.setVisibility(View.GONE); } } private void getProfileInformation() { try { if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) { Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); String personName = currentPerson.getDisplayName(); String personPhotoUrl = currentPerson.getImage().getUrl(); String email = Plus.AccountApi.getAccountName(mGoogleApiClient); username.setText(personName); emailLabel.setText(email); new LoadProfileImage(image).execute(personPhotoUrl); // update profile frame with new info about Google Account // profile updateProfile(true); } } catch (Exception e) { e.printStackTrace(); } } @Override public void onConnectionSuspended(int cause) { mGoogleApiClient.connect(); updateProfile(false); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.signin: googlePlusLogin(); break; } } public void signIn(View v) { googlePlusLogin(); } public void logout(View v) { googlePlusLogout(); } private void googlePlusLogin() { if (!mGoogleApiClient.isConnecting()) { signedInUser = true; resolveSignInError(); } } private void googlePlusLogout() { if (mGoogleApiClient.isConnected()) { Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); mGoogleApiClient.disconnect(); mGoogleApiClient.connect(); updateProfile(false); } } // download Google Account profile image, to complete profile private class LoadProfileImage extends AsyncTask<String, Void, Bitmap> { ImageView downloadedImage; public LoadProfileImage(ImageView image) { this.downloadedImage = image; } protected Bitmap doInBackground(String... urls) { String url = urls[0]; Bitmap icon = null; try { InputStream in = new java.net.URL(url).openStream(); icon = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return icon; } protected void onPostExecute(Bitmap result) { downloadedImage.setImageBitmap(result); } } 
+5
source share
1 answer

I found a solution for my question

Add this code to the exit activity page. His work is excellent

My account activity

  public class LogoutActivity extends Activity implements OnClickListener, ConnectionCallbacks, OnConnectionFailedListener, ResultCallback<People.LoadPeopleResult> { GoogleApiClient mGoogleApiClient; boolean mSignInClicked; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this).addApi(Plus.API) .addScope(Plus.SCOPE_PLUS_LOGIN).build(); //copy this code on "Logout" Onclick logout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (mGoogleApiClient.isConnected()) { Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); mGoogleApiClient.disconnect(); mGoogleApiClient.connect(); // updateUI(false); System.err.println("LOG OUT ^^^^^^^^^^^^^^^^^^^^ SUCESS"); } } }); } @Override public void onConnected(Bundle arg0) { // TODO Auto-generated method stub mSignInClicked = false; // updateUI(true); Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback( this); } @Override public void onConnectionSuspended(int arg0) { // TODO Auto-generated method stub mGoogleApiClient.connect(); // updateUI(false); } @Override public void onConnectionFailed(ConnectionResult arg0) { // TODO Auto-generated method stub } protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } protected void onStop() { super.onStop(); if (mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } } @Override public void onResult(LoadPeopleResult arg0) { // TODO Auto-generated method stub } 

reference link

+2
source

All Articles