在我的Android应用程序中,每当我重新打开最小化的应用程序时,它都会再次为我提供登录屏幕。它应该直接给我导航/仪表板活动,因为我没有注销会话。
所以这是我的代码。我需要一些能够正确创建用户会话的实现。
package com.tricktechs.googlelogin;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
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.ResultCallback;
import com.google.android.gms.common.api.Status;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,GoogleApiClient.OnConnectionFailedListener{
LinearLayout prof_section;
Button signout;
SignInButton signInButton;
TextView name,email;
ImageView prof_pic;
GoogleApiClient googleApiClient;
final static int REQ_CODE = 9001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prof_section = (LinearLayout)findViewById(R.id.prof_section);
signout = (Button) findViewById(R.id.btn_logout);
signInButton = (SignInButton) findViewById(R.id.bn_login);
name = (TextView) findViewById(R.id.name);
email = (TextView) findViewById(R.id.email);
prof_pic = (ImageView)findViewById(R.id.prof_pic);
//googleApiClient = (GoogleApiClient) findViewById()
prof_section.setVisibility(View.GONE);
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,signInOptions).build();
signInButton.setOnClickListener(this);
signout.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId())
{
case R.id.btn_logout :
signOut();
break;
case R.id.bn_login :
signIn();
break;
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
private void signIn()
{
Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(intent,REQ_CODE);
}
private void signOut()
{
Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
updateUI(false);
}
});
}
private void handleResilt(GoogleSignInResult googleSignInResult)
{
if(googleSignInResult.isSuccess())
{
GoogleSignInAccount account = googleSignInResult.getSignInAccount();
String Name = account.getDisplayName();
String Email = account.getEmail();
// String image_url = account.getPhotoUrl().toString();
name.setText(Name);
email.setText(Email);
// Glide.with(this).load(image_url).into(prof_pic);
updateUI(true);
}
else
{
updateUI(false);
}
}
private void updateUI(boolean isLogin)
{
if(isLogin)
{
prof_section.setVisibility(View.VISIBLE);
signInButton.setVisibility(View.GONE);
}
else
{
prof_section.setVisibility(View.GONE);
signInButton.setVisibility(View.VISIBLE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQ_CODE )
{
GoogleSignInResult reslut = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleResilt(reslut);
}
}
}
答案 0 :(得分:0)
我认为您必须使用SharedPreferences
来检查登录信息。重定向页面。
您可以参考以下链接:
How can I keep my google plus session opened after android application close?