2017-03-07 2 views
-1

Ich möchte Google in mein Spiel integrieren. Aber ich möchte nicht mit einer Schaltfläche anmelden, ich möchte es passieren, sobald Benutzer die Anwendung öffnet. Immer wenn MenuActivity erstellt wird, werden Sie aufgefordert, ein Konto für die Anmeldung auszuwählen. Aber ich möchte, dass das Konto nur einmal (zum ersten Mal) ausgewählt wird und jedes Mal erinnert wird. Hier ist der Code:Google+ Anmeldung fordert jedes Mal auf, ein Konto zu wählen, wenn die Aktivität erstellt wurde

public class MenuActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener { 

private GoogleApiClient mGoogleApiClient; 
private static final String TAG = MainActivity.class.getSimpleName(); 
private static final int RC_SIGN_IN = 007; 

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

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

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this, this) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 



    if(!mGoogleApiClient.isConnected()){ 
     signIn(); 
    } 
} 

public void startGame(View view){ 
    startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
} 

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



@Override 
protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 

} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 
} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    // An unresolvable error has occurred and Google APIs (including Sign-In) will not 
    // be available. 
    Log.d(TAG, "onConnectionFailed:" + connectionResult); 
} 

private void handleSignInResult(GoogleSignInResult result) { 
    Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
    if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 

    } else { 

    } 
} 
} 

Antwort

0

Erste SharedPreferences

public void saveUser (String key, String value) { 
    SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); 
    SharedPreferences.Editor editor = pref.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
} 

public String getUser (String key) { 
    SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); 
    return pref.getString(key, ""); 
} 

E-Mail Check Benutzer erstellen, wenn es leer ist hinzufügen SharedPreferences

if(!mGoogleApiClient.isConnected() && getUser("email").isEmpty()){ 
    signIn(); 
} 


private void handleSignInResult(GoogleSignInResult result) { 
    Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
    if (result.isSuccess()) { 
    // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount acct = result.getSignInAccount(); 
     saveUser("email", acct.getEmail()); 
     saveUser("name", acct.getDisplayName()); 
    } else { 

    } 
} 
Verwandte Themen