1

当应用程序连接到 Google Plus 时,我试图找到任何必要的方法来设置连接超时。但是,我找不到任何可以为我设置它的东西。这是我的代码。无论如何设置连接超时?

GooglePlusWebService.java

package com.mystuff.WebServices;

import android.app.Activity;
import android.content.IntentSender;
import android.util.Log;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.plus.Plus;
import com.google.android.gms.plus.model.people.Person;
import com.pointwest.timetrackermobilelog.Models.ProfileInformation;



public class GooglePlusWebService  {

    // Google client to interact with Google API
    private GoogleApiClient mGoogleApiClient;

    public static String LOG_TAG = GooglePlusWebService.class.getSimpleName();

    private boolean mSignInClicked;
    private boolean mIntentInProgress;
    private ConnectionResult mConnectionResult;
    private static final int RC_SIGN_IN = 0;


    public GooglePlusWebService(Activity activity) {


        mGoogleApiClient = new GoogleApiClient.Builder(activity)
                .addConnectionCallbacks((GoogleApiClient.ConnectionCallbacks) activity)
                .addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) activity)
                .addApi(Plus.API, new Plus.PlusOptions.Builder().build())
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build();
    }

    public void start() {
//      Log.e(LOG_TAG, "onStart called");
        mGoogleApiClient.connect();
    }

    public void stop() {
//      Log.e(LOG_TAG, "onStop called");
        if (mGoogleApiClient.isConnected()) {
//          Log.e(LOG_TAG, "api connected -> disconnect");
            mGoogleApiClient.disconnect();
        }
    }

    /**
     * Sign-in into google
     * */
    public void signInWithGplus(Activity activity) {
      //Log.e(LOG_TAG, "signInWithGplus called");
        if (!mGoogleApiClient.isConnecting()) {
          //Log.e(LOG_TAG, "api client NOT connecting");
            mSignInClicked = true;
            resolveSignInError(activity);
        } else {
          //Log.e(LOG_TAG, "api client connecting");
        }
    }

    /**
     * Method to resolve any signin errors
     * */
    public void resolveSignInError(Activity activity) {
      //Log.e(LOG_TAG, "resolveSignError called");
        if (mConnectionResult.hasResolution()) {
            try {
              //Log.e(LOG_TAG, "connection result has resolution");
                mIntentInProgress = true;
                mConnectionResult.startResolutionForResult(activity, RC_SIGN_IN);
              //Log.e(LOG_TAG, "connection startResolutionForResult");
            } catch (IntentSender.SendIntentException e) {
               //Log.e(LOG_TAG, "error : ");
                e.printStackTrace();
                mIntentInProgress = false;
                mGoogleApiClient.connect();

            }


        }
    }

    public void connected(Activity activity) {
//       Log.e(LOG_TAG, "onConnected called");
        mSignInClicked = false;
        //Toast.makeText(activity, "User is connected!", Toast.LENGTH_LONG).show();
    }

    public ProfileInformation getProfileInformation() {
       //Log.e(LOG_TAG, "getProfileInformation called");
        ProfileInformation profileInformation = new ProfileInformation();
        try {
            if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
                Person currentPerson = Plus.PeopleApi
                        .getCurrentPerson(mGoogleApiClient);
                profileInformation.setPersonName(currentPerson.getDisplayName());
                profileInformation.setPersonPhotoUrl(currentPerson.getImage().getUrl());
                profileInformation.setPersonGooglePlusProfile(currentPerson.getUrl());
                profileInformation.setEmail(Plus.AccountApi.getAccountName(mGoogleApiClient));

//               Log.e(LOG_TAG, "Name: " + profileInformation.getPersonName()
//                        + ", plusProfile: " + profileInformation.getPersonGooglePlusProfile()
//                        + ", email: " + profileInformation.getEmail()
//                        + ", Image: " + profileInformation.getPersonPhotoUrl());
            }
        } catch (Exception e) {
            Log.e(LOG_TAG, "Error: ", e );
        }

        return profileInformation;
    }

    /**
     * Sign-out from google
     * */
    public void signOutFromGplus() {
//      Log.e(LOG_TAG, "signOutFromGplus called");
        if (mGoogleApiClient.isConnected()) {
//           Log.e(LOG_TAG, "mGoogleApiClient.isConnected");
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
            mGoogleApiClient.disconnect();
            mGoogleApiClient.connect();
        }
    }



    /**
     * Revoking access from google
     * */
    public void revokeGplusAccess() {
       //Log.e(LOG_TAG, "revokeGplusAccess called");
        if (mGoogleApiClient.isConnected()) {
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
//            Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient)
//                    .setResultCallback(new ResultCallback<Status>() {
//                        @Override
//                        public void onResult(Status arg0) {
//                           //Log.e(LOG_TAG, "User access revoked!");
//                            mGoogleApiClient.connect();
////                            updateUI(false);
//                        }
//
//                    });
        }
    }

    public void checkActivityResult(int requestCode, int responseCode, int RESULT_OK) {
       //Log.e(LOG_TAG, "onActivityResult called");
        if (requestCode == RC_SIGN_IN) {
            if (responseCode != RESULT_OK) {
                mSignInClicked = false;
            }

            mIntentInProgress = false;

            if (!mGoogleApiClient.isConnecting()) {
                mGoogleApiClient.connect();
            }
        }
    }


    public void connectionFailed(ConnectionResult result, Activity activity) {
//       Log.e(LOG_TAG, "onConnectionFAiled called : " + result.getErrorCode());
        if (!result.hasResolution()) {
           //Log.e(LOG_TAG, "result has no resolution");
            GooglePlayServicesUtil.getErrorDialog (result.getErrorCode(), activity,0).show();
            return;
        }

        if (!mIntentInProgress) {
           //Log.e(LOG_TAG, "mIntent not in progress");
            // Store the ConnectionResult for later usage
            mConnectionResult = result;

            if (mSignInClicked) {
               //Log.e(LOG_TAG, "sign in has clicked");
                // The user has already clicked 'sign-in' so we attempt to
                // resolve all
                // errors until the user is signed in, or they cancel.
                resolveSignInError(activity);
            }
        }
    }
}

以及调用它的 Activity。我裁剪了一些不必要的部分。

MainActivity.java

package com.mystuff.Activities;

import android.app.Activity;
import android.app.FragmentManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.astuetz.PagerSlidingTabStrip;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;


import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;



public class MainActivity extends ActionBarActivity implements
        ConnectionCallbacks,
        OnConnectionFailedListener,
        ConnectivityReceiver.OnNetworkAvailableListener,
        MainFragment.SaveButtonListener
{

    public static String LOG_TAG = MainActivity.class.getSimpleName();

    //Application Class
    ApplicationClass applicationClass;

    // Activity to be used for saving tasks into the database;
    private Activity activity;

   // GooglePlus Webservice client to interact with Google API
    private GooglePlusWebService googlePlusWebService;


    //Internet Checker
    private boolean isInternetConnected = false;

    //Share Preferences
    SharedPreferences sharedPreferences;

    //Connection Receiver
    private ConnectivityReceiver connectivityReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState);
//        Log.e(LOG_TAG, "onCreate called ");

        activity = this;

        setContentView(R.layout.activity_main_material);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        // Initialization of view pager
        viewPager = (ViewPager) findViewById(R.id.pager);

        sharedPreferences = getSharedPreferences("Shared", Context.MODE_PRIVATE);
//        String username = sharedPreferences.getString(SystemConstants.POINTWEST_USERNAME, "");

        if (InternetConnection.isConnected(this)) {
            applicationClass = (ApplicationClass) getApplication();
applicationClass.getTracker(ApplicationClass.TrackerName.APP_TRACKER);
            googlePlusWebService = new GooglePlusWebService(this);
            isInternetConnected = true;

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

        if (isInternetConnected) {
            googlePlusWebService.start();

            //Get an Analytics tracker to report app starts and uncaught exceptions etc.
            GoogleAnalytics.getInstance(this).reportActivityStart(this);
        }


    }

    @Override
    public void onStop() {
        Log.e(LOG_TAG, " ## start: onStop called ##");
        super.onStop();
        if (isInternetConnected) {
            googlePlusWebService.stop();

            //Stop the analytics tracking
            GoogleAnalytics.getInstance(this).reportActivityStop(this);
        }



//        Log.e(LOG_TAG, " ## finished: onStop  ##");

    }

    @Override
    public void onDestroy(){
        connectivityReceiver.unbind(activity);

        super.onDestroy();
//        Log.e(LOG_TAG, " ## start: on Destroy called ##");

        tabsPagerAdapter  = new TabsPagerAdapter(
                getSupportFragmentManager(),
                new ArrayList<ProjectTask>(),
                new ArrayList<ProjectTask>());

//        viewPager.setAdapter(tabsPagerAdapter);

//        Log.e(LOG_TAG, " ## finished: on Destroy called ##");
    }


    @Override
    public void onConnected(Bundle bundle) {
        if (isInternetConnected) {
            googlePlusWebService.connected(this);
//            Log.e(LOG_TAG, "onConnected");
        }
        // Get user's information
//        getProfileInformation();
    }

    @Override
    public void onConnectionSuspended(int i) {
        if (isInternetConnected) {
            googlePlusWebService.start();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int responseCode,
                                 Intent intent) {
        if (isInternetConnected) {
            googlePlusWebService.checkActivityResult(requestCode, responseCode, RESULT_OK);
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        if (isInternetConnected) {
            googlePlusWebService.connectionFailed(connectionResult, this);
        }
    }




}
4

0 回答 0