2017-08-25 2 views
0

Ich möchte einen Alertdialog anzeigen, wenn der Benutzer sich zum ersten Mal anmeldet (ich verwende Firebase-Authentifizierung). Irgendwelche Ideen, wie ich das machen kann? Ich habe versucht, SharedPreferences zu verwenden, aber das zeigt nur den Alertdialog an, wenn die Anwendung das erste Mal auf dem Gerät ausgeführt wird. Ich möchte, dass es benutzerspezifisch ist, so dass der Alertdialog für jeden Benutzer bei der ersten Anmeldung angezeigt wird.Android - Alertdialog für authentifizierten Firebase-Benutzer

+0

zerstören, was Sie bisher versucht haben? –

Antwort

1

Eine Möglichkeit besteht darin, den Dialog kurz vor dem Aufruf von finish() bei Ihrer Anmeldeaktivität anzuzeigen. Eine andere Möglichkeit besteht darin, zu überprüfen, dass FirebaseAuth.getInstance(). GetCurrentUser() nicht null zurückgibt und dann das Dialogfeld von der Aktivität aus anzeigt, von der aus es gerade aufgerufen wird. Danach speichern Sie ein "alert displayed" -Flag in den Einstellungen, die mit der Benutzer-ID verknüpft sind, und prüfen Sie, ob diese vorhanden ist, bevor Sie die Warnung anzeigen.

Es tut mir leid, nicht genauer zu sein. Bitte posten Sie Ihren Code, wenn Sie eine genauere Antwort wünschen.

+0

Danke, ich werde deine zweite Lösung versuchen – John

1

In Ihrer onActivityResult können Sie die progressDialog so zeigen.

@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); 
     if (result.isSuccess()) { 
      // Google Sign In was successful, authenticate with Firebase 
      GoogleSignInAccount account = result.getSignInAccount(); 
      progress = new ProgressDialog(this); 
      progress.setMessage("Connecting Please Wait!.."); 
      progress.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      progress.setIndeterminate(false); 
      progress.show(); 
      firebaseAuthWithGoogle(account); 
     } else { 
      // Google Sign In failed, update UI appropriately 
      // ... 
     } 
    } 
} 

und die firebaseAuthWithGoogle(GoogleSignInAccount account) Funktion ist

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
     Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); 

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         progress.cancel(); 
         // Sign in success, update UI with the signed-in user's information 
//and here you can use your sharedPreference for that Account. 
          Log.d(TAG, "signInWithCredential:success"); 
         } else { 
          // If sign in fails, display a message to the user. 
          Log.w(TAG, "signInWithCredential:failure", task.getException()); 
         Toast.makeText(MainActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 
} 

und der folgende Code ist, wo Sie für die überprüfen, ob der Benutzer signedIn ist oder nicht

mAuthListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       final FirebaseUser user = firebaseAuth.getCurrentUser(); 
       if (user != null) { 
        // User is signed in 
        Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 

        startActivity(new Intent(MainActivity.this,HomeActivity.class)); 
       } else { 
        // User is signed out 
        Log.d(TAG, "onAuthStateChanged:signed_out"); 
       } 
      } 
     }; 

Ich hoffe, es hilft. Wie Sie sehen FirebaseAuth Sie neigt dazu, ohne sharedPreference zu helfen einzuloggen, aber wenn Sie es verwenden möchten, können Sie einfach sicher, dass Sie sharedPreference auf dem Klicken SignOut Knopf in Ihrer Anwendung