2017-05-25 6 views
0

私のアプリでユーザアカウントを確認する必要があり、アプリで複数回チェックする必要があります。this answerを使用しても問題ありませんが、アカウントの選択ダイアログが「アカウントを選択」して表示されますが、それはまったくうまくいかないので、それを止めるための解決策がありがたいです!ユーザアカウントを取得するたびに選択チューザのダイアログが表示されないようにする

答えて

0

アカウントピッカーを使用しているあなたは、ダイアログは私が制御する必要が

0

共有設定を使用するチェック値を保存し、存在する場合はそれを確認し、次に表示しない場合は表示しないでください。

// MY_PREFS_NAME - a static String variable like: 
//public static final String MY_PREFS_NAME = "MyPrefsFile"; 
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
editor.putString("name", "user1"); 
editor.putInt("idName", 1); 
editor.commit(); 

は好みからデータを取得します:好みの値を設定する

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("text", null); 
if (restoredText != null) { 
    String name = prefs.getString("name", "No name defined");//"No name defined" is the default value. 
    int idName = prefs.getInt("idName", 0); //0 is the default value. 
} 




//Call this function in you OnCreate Method.! 
private void signIn() { 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 


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

      Log.e(TAG, "display name: " + acct.getDisplayName()); 

      personName = acct.getDisplayName(); 
      email = acct.getEmail(); 

      if(acct.getPhotoUrl()!= null) { 
       personPhotoUrl = acct.getPhotoUrl(); 

      } 
      else 
      { 
       personPhotoUrl=Uri.parse("android.resource://com.compscitutorials.basigarcia.navigationdrawervideotutorial/drawable/add_profile_image");; 
       Log.d(TAG, "handleSignInResult: Photo Url is empty"); 
      } 



      Log.e(TAG, "Name: " + personName + ", email: " + email 
        + ", Image: " + personPhotoUrl.getPath().toString()); 

//   txtName.setText(personName); 
//   txtEmail.setText(email); 
//   Glide.with(getApplicationContext()).load(personPhotoUrl) 
//     .thumbnail(0.5f) 
//     .crossFade() 
//     .diskCacheStrategy(DiskCacheStrategy.ALL) 
//     .into(imgProfilePic); 
       updateUI(true); 


     } else { 
      // Signed out, show unauthenticated UI. 
      updateUI(false); 
     } 
    } 

は今、以前と現在のユーザーを比較します!

private void updateUI(boolean isSignedIn) { 
     if (isSignedIn) { 
    if(!currentName.equals(name)) 
    { 
    //Next, launch the account chooser intent: 

    Intent intent = AccountPicker.newChooseAccountIntent(null, null, 
     new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, 
     false, null, null, null, null); 

    try { 
     startActivityForResult(intent, REQUEST_CODE_EMAIL); 
    } catch (ActivityNotFoundException e) { 
     // This device may not have Google Play Services installed. 
     // TODO: do something else 
     } 
     } 
     } else { 
    //  Display Toast SignUp Failed 
       Toast.makeText(this, "SignUp Error", Toast.LENGTH_SHORT).show(); 
      } 
     } 

//最後に、アカウントの種類を取得するためにonActivityResultオーバーライドして、アカウント名:

@ @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); 
    } 
} 
+0

表示されないことを期待すべきではありませんので、保存されたユーザー(最後にチェックされたユーザー)が同じユーザーの実行アプリである場合は、毎回チェックする必要がありますが、毎回選択者が欲しくない理由は – sasan

+0

です。同じであれば表示しないで表示してください。 –

+0

それは問題です!現在のユーザーを取得したいときに選択ボタンが表示されます。私が必要とするのは、ユーザーを取得する際に表示しない方法です。 – sasan

関連する問題