我成功地在我的应用程序中设置了谷歌登录,效果很好。我还添加了一个有效的注销按钮。我面临的问题是,每当我打开应用程序时,它都要求用户在进入下一个应用程序之前登录谷歌(或者只需按下按钮) activity
. 我尝试了许多不同的方法来解决这个问题,但似乎没有一种有效。有人能帮我做一个持久的谷歌登录吗?在这个过程中,即使用户关闭了应用程序,它也会让他们保持登录,并且他们永远看不到登录活动(除非他们注销)?
这是我的密码 LoginActivity
:
public class LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {
SignInButton signInButton;
private GoogleApiClient googleApiClient;
private SharedPreferences prefs;
private int progress;
private int SIGN_IN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso).build();
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
progress = prefs.getInt("SIGN_IN", 0);
signInButton = findViewById(R.id.signInWithGoogle);
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(intent, SIGN_IN);
SharedPreferences.Editor editPrefs = prefs.edit();
editPrefs.putInt("SIGN_IN", 1);
editPrefs.apply();
}
});
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SIGN_IN){
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()){
startActivity(new Intent(LoginActivity.this, StudentInformationFormActivity.class));
finish();
} else {
Toast.makeText(this, "Login Failed!", Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onPause() {
super.onPause();
}
}
1条答案
按热度按时间qaxu7uf21#
有一次我也遇到了同样的问题,我看了看我的旧代码,发现了这样的问题:
因此,您可以检查用户是否已登录activity的onstart,如果已登录,请转到下一个活动。希望有帮助:)