android应用程序关闭后,如何保持google plus会话打开?
这是我第一次在这里发帖,因为我以前从未有过这样的需要,因为我的每一个问题都已经得到了回答 问题是,我正试图用google plus登录我的android应用程序,但如果我关闭我的应用程序。。我不知道如何查看用户是否已登录。。有没有办法检查一下 例如: -您在我的应用程序中登录,然后转到main活动,而不是登录活动。 -然后你不注销,你只需关闭我的应用。。也许半个小时。。 -在那之后。。您再次打开我的应用程序,而不是再次转到主活动。。您再次进入登录活动 有没有办法知道您是否已经登录 这是我的登录类:android应用程序关闭后,如何保持google plus会话打开?,android,sign,google-api-client,Android,Sign,Google Api Client,这是我第一次在这里发帖,因为我以前从未有过这样的需要,因为我的每一个问题都已经得到了回答 问题是,我正试图用google plus登录我的android应用程序,但如果我关闭我的应用程序。。我不知道如何查看用户是否已登录。。有没有办法检查一下 例如: -您在我的应用程序中登录,然后转到main活动,而不是登录活动。 -然后你不注销,你只需关闭我的应用。。也许半个小时。。 -在那之后。。您再次打开我的应用程序,而不是再次转到主活动。。您再次进入登录活动 有没有办法知道您是否已经登录 这是我的登录类
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.plus.Plus;
public final class LoginGPlusFragment extends Fragment implements
View.OnClickListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener
{
/* Request code used to invoke sign in user interactions. */
private static final int RC_SIGN_IN = 0;
/**
* True if we are in the process of resolving a ConnectionResult
*/
private boolean mIntentInProgress;
/**
* True if the sign-in button was clicked. When true, we know to resolve all
* issues preventing sign-in without waiting.
*/
private boolean mSignInClicked;
static GoogleApiClient mGoogleApiClient;
SignInButton btnLogin;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_gplus_login, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
Log.d("DEBUG","onViewCreated LoginGPlusFragment");
super.onViewCreated(view, savedInstanceState);
if(mGoogleApiClient == null || !mGoogleApiClient.isConnected())
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope("profile"))
.build();
else
Log.d("DEBUG","onViewCreated you're already connected");
btnLogin = (SignInButton)view.findViewById(R.id.sign_in_button);
btnLogin.setOnClickListener(this);
}
@Override
public void onConnectionFailed(ConnectionResult result)
{
Log.d("DEBUG","onConnectionFailed LoginGPlusFragment");
if (!mIntentInProgress)
{
if (mSignInClicked && result.hasResolution())
{
// The user has already clicked 'sign-in' so we attempt to resolve all
// errors until the user is signed in, or they cancel.
try
{
result.startResolutionForResult(getActivity(), RC_SIGN_IN);
mIntentInProgress = true;
} catch (IntentSender.SendIntentException e) {
// The intent was canceled before it was sent. Return to the default
// state and attempt to connect to get an updated ConnectionResult.
mIntentInProgress = false;
mGoogleApiClient.connect();
}
}
}
}
@Override
public void onClick(View view)
{
if (view.getId() == R.id.sign_in_button && !mGoogleApiClient.isConnecting())
{
mSignInClicked = true;
mGoogleApiClient.connect();
}
}
@Override
public void onResume()
{
super.onResume();
Log.d("DEBUG","onResume LoginGPlusFragment");
if(mGoogleApiClient!=null && mGoogleApiClient.isConnected())
launchChatActivity();
else
Log.d("DEBUG","onResume you are disconnected");
}
@Override
public void onConnected(Bundle bundle)
{
Log.d("DEBUG","onConnected LoginGPlusFragment");
mSignInClicked = false;
launchChatActivity();
}
private void launchChatActivity()
{
String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
Log.d("DEBUG", "Connected with google. You are "+accountName);
btnLogin.setVisibility(View.INVISIBLE);
Intent i = new Intent(getActivity(), ChatActivity.class);
startActivity(i);
getActivity().finish();
}
@Override
public void onConnectionSuspended(int i)
{
Log.d("DEBUG","onConnectionSuspended LoginGPlusFragment");
mGoogleApiClient.connect();
}
@Override
public void onActivityResult(int requestCode, int responseCode, Intent data)
{
super.onActivityResult(requestCode, responseCode, data);
Log.d("DEBUG","onActivityResult LoginGPlusFragment");
if (requestCode == RC_SIGN_IN)
{
if (responseCode != getActivity().RESULT_OK)
{
mSignInClicked = false;
}
mIntentInProgress = false;
if (!mGoogleApiClient.isConnected())
{
mGoogleApiClient.reconnect();
}
}
}
}
非常感谢 好的,我自己回答 由于我仍然不知道是否有自动执行的方法,我现在通过在onConnected方法中保存一个共享首选项来执行此操作:
@Override
public void onConnected(Bundle bundle)
{
SharedPreferences sharedPref = getActivity().getSharedPreferences("login", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("signed_in_with_google", true);
editor.commit();
Log.d("DEBUG","onConnected LoginGPlusFragment");
mSignInClicked = false;
launchChatActivity();
}
我在断开连接的方法中删除了它
//谷歌注销
if(LoginGPlusFragment.mGoogleApiClient.isConnected())
LoginGPlusFragment.mGoogleApiClient.disconnect();
SharedPreferences sharedPref = getSharedPreferences("login", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("signed_in_with_google", false);
editor.commit();
returnToLoginScreen();
然后,我在onCreateView中检查我的首选项是否为true:
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
{
Log.d("DEBUG","onViewCreated LoginGPlusFragment");
super.onViewCreated(view, savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(new Scope("profile"))
.build();
SharedPreferences pref = getActivity().getSharedPreferences("login", Context.MODE_PRIVATE);
boolean signed = pref.getBoolean("signed_in_with_google", false);
btnLogin = (SignInButton) view.findViewById(R.id.sign_in_button);
btnLogin.setOnClickListener(this);
if(signed)
{
Log.d("DEBUG","You were previously signed in with google.");
connect();
}
}