Google登录时,当我关闭我的应用时,它会再次显示Google登录页面

时间:2017-08-15 06:40:11

标签: android google-signin

MainActivity

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks ,GoogleApiClient.OnConnectionFailedListener,View.OnClickListener {

    private SignInButton signInButton;
    private GoogleApiClient googleApiClient;
    public static final String TAG="MainActivity";
    private static final int RC_SIGN_IN=1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        GoogleSignInOptions googleSignInOptions=new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();

        googleApiClient=new GoogleApiClient.Builder(this).enableAutoManage(this,this)
                .addApi(Auth.GOOGLE_SIGN_IN_API,googleSignInOptions).build();
        signInButton=(SignInButton)findViewById(R.id.mainactivitygooglesigninbutton);
        signInButton.setOnClickListener(this);



    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.mainactivitygooglesigninbutton:
                signIn();
                break;
        }
    }

    private void signIn() {
        Intent intent=Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
        startActivityForResult(intent,RC_SIGN_IN);
    }


    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Toast.makeText(getApplicationContext(), "Login Failed", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==RC_SIGN_IN){
            GoogleSignInResult result=Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        }
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if(result.isSuccess()){
            GoogleSignInAccount account=result.getSignInAccount();
            Intent intent=new Intent(this,ContactsActivity.class);
            startActivity(intent);
            finish();
        }
    }


    @Override
    public void onConnected(@Nullable Bundle bundle) {
        if (googleApiClient != null && googleApiClient.isConnected()) {
            Intent intent=new Intent(this,ContactsActivity.class);
            startActivity(intent);
            finish();
        }
    }

    @Override
    public void onConnectionSuspended(int i) {

    }
}

我的MainActivity有登录选项 当我打开我的应用程序并登录时,它将我带到ContactsActivity.Now当我关闭我的应用程序并再次启动它再次向我显示MainActivity但我想直接显示ContactsActivity。一旦用户成功登录并且如果他关闭应用程序然后我想直接显示ContactsActivity 请帮忙。

1 个答案:

答案 0 :(得分:0)

在共享首选项中保存登录阶段。

protected void onCreate(Bundle savedInstanceState) {
.
.
.


SharedPreferences sharedPreferences = getSharedPreferences("user_login_info",MODE_PRIVATE);
if(sharedPreferences.getBoolean(user_login,false)){
        startActivity(new Intent(this,ContactsActivity.class));
        finish();
    }

 }



private void handleSignInResult(GoogleSignInResult result) {
    if(result.isSuccess()){
        GoogleSignInAccount account=result.getSignInAccount();
        Intent intent=new Intent(this,ContactsActivity.class);
        SharedPreferences sharedPreferences = getSharedPreferences("user_login_info",MODE_PRIVATE);
        editor = sharedPreferences.edit();
        editor.putBoolean("user_login",true); //saving user info
        editor.commit();
        startActivity(intent);
        finish();
    }
}

当用户退出时,只需清除共享首选项值

SharedPreferences sharedPreferences = getSharedPreferences("user_login_info",MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.clear();
editor.commit();