2017-08-15 44 views
0

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 請幫助。

+0

去用[https://stackoverflow.com/a/35198312/8012913] –

+0

非常感謝NIVESH – Cycle

+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();