2

これは私のGoogleのサインインページです:Google SigninアクティビティのどこからAsyntaskを呼び出しますか?

public class SignInActivity extends AppCompatActivity implements 
     GoogleApiClient.OnConnectionFailedListener, 
     View.OnClickListener { 

    private static final String TAG = "SignInActivity"; 
    private static final int RC_SIGN_IN = 9001; 

    private GoogleApiClient mGoogleApiClient; 
    private TextView mStatusTextView; 
    private ProgressDialog mProgressDialog; 
    ConnectivityManager cm; 
    NetworkInfo netInfo; 
    Context context; 
    ProgressDialog pd; 
    GoogleSignInAccount acct; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     android.support.v7.app.ActionBar ab = getSupportActionBar(); 
     ab.hide(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.signin_page); 
     cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     netInfo = cm.getActiveNetworkInfo(); 
     context=this; 
     // Button listeners 
     findViewById(R.id.sign_in_button).setOnClickListener(this); 
     pd = new ProgressDialog(SignInActivity.this); 
     pd.setMessage("loading"); 
     // [START configure_signin] 
     // Configure sign-in to request the user's ID, email address, and basic 
     // profile. ID and basic profile are included in DEFAULT_SIGN_IN. 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .build(); 
     // [END configure_signin] 

     // [START build_client] 
     // Build a GoogleApiClient with access to the Google Sign-In API and the 
     // options specified by gso. 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 
     // [END build_client] 

     // [START customize_button] 
     // Customize sign-in button. The sign-in button can be displayed in 
     // multiple sizes and color schemes. It can also be contextually 
     // rendered based on the requested scopes. For example. a red button may 
     // be displayed when Google+ scopes are requested, but a white button 
     // may be displayed when only basic profile is requested. Try adding the 
     // Scopes.PLUS_LOGIN scope to the GoogleSignInOptions to see the 
     // difference. 
     SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
     signInButton.setSize(SignInButton.SIZE_STANDARD); 
     signInButton.setScopes(gso.getScopeArray()); 
     // [END customize_button] 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); 
     if (opr.isDone()) { 
      // If the user's cached credentials are valid, the OptionalPendingResult will be "done" 
      // and the GoogleSignInResult will be available instantly. 
      Log.d(TAG, "Got cached sign-in"); 
      GoogleSignInResult result = opr.get(); 
      handleSignInResult(result); 
     } else { 
      // If the user has not previously signed in on this device or the sign-in has expired, 
      // this asynchronous branch will attempt to sign in the user silently. Cross-device 
      // single sign-on will occur in this branch. 
      showProgressDialog(); 
      opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
       @Override 
       public void onResult(GoogleSignInResult googleSignInResult) { 
        hideProgressDialog(); 
        handleSignInResult(googleSignInResult); 
       } 
      }); 
     } 
    } 

    // [START 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); 
     } 
    } 
    // [END onActivityResult] 

    // [START handleSignInResult] 
    private void handleSignInResult(GoogleSignInResult result) { 
     Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 

      acct = result.getSignInAccount(); 

      pd.show(); 
      fetchUserdataServerAsync mfetchUserdataServerAsync= 
        new fetchUserdataServerAsync(acct.getEmail()); 
      mfetchUserdataServerAsync.execute(); 

      Intent intentreg = new Intent(this, RegistrationIntentService.class); 
      intentreg.putExtra("email", "" + acct.getEmail()); 
      startService(intentreg); 

      // mStatusTextView.setText(getString("SignIN", acct.getDisplayName())); 
      updateUI(true); 
     } else { 
      // Signed out, show unauthenticated UI. 
      updateUI(false); 
     } 
    } 
    // [END handleSignInResult] 

    // [START signIn] 
    private void signIn() { 

     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 

    } 
    // [END signIn] 


    // [START revokeAccess] 
    private void revokeAccess() { 
     Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
       new ResultCallback<Status>() { 
        @Override 
        public void onResult(Status status) { 
         // [START_EXCLUDE] 
         updateUI(false); 
         // [END_EXCLUDE] 
        } 
       }); 
    } 
    // [END revokeAccess] 

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

    private void showProgressDialog() { 
     if (mProgressDialog == null) { 
      mProgressDialog = new ProgressDialog(this); 
      mProgressDialog.setMessage("Loading..."); 
      mProgressDialog.setIndeterminate(true); 
     } 

     mProgressDialog.show(); 
    } 

    private void hideProgressDialog() { 
     if (mProgressDialog != null && mProgressDialog.isShowing()) { 
      mProgressDialog.hide(); 
     } 
    } 

    private void updateUI(boolean signedIn) { 
     if (signedIn) { 
      findViewById(R.id.sign_in_button).setVisibility(View.GONE); 

     } else { 
      // mStatusTextView.setText("Sign Out"); 

      findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE); 

     } 
    } 

    @Override 
    public void onClick(View v) { 

      switch (v.getId()) { 
       case R.id.sign_in_button: 
        if (netInfo != null && netInfo.isConnected()) { 
        signIn();}else { 
         Toast.makeText(context, "Check Your Internet Connection", 
           Toast.LENGTH_LONG).show(); 
        } 
        break; 
      } 
    } 
    @Override 
    public void onBackPressed() { 

     super.onBackPressed(); 
    } 
    private static boolean doesDatabaseExist(Context context) { 
     DataBaseHelper mydb = new DataBaseHelper(context); 
     File dbFile = context.getDatabasePath(mydb.getDatabaseName()); 
     return dbFile.exists(); 
    } 

    private class fetchUserdataServerAsync extends AsyncTask<Void, Void, String> { 

     String username; 

     public fetchUserdataServerAsync(String _username) { 

      username = _username; 
     } 

     @Override 
     protected String doInBackground(Void... voids) { 
      // JSONObject jsonObject= null; 

      JSONArray jsonArr = new JSONArray(); 

      jsonArr.put(username); 

      return Http.httpPost(jsonArr, "http://xxxxx.com/fetchdata.jsp", null); 


     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

     } 

     @Override 
     protected void onPostExecute(String data) { 
      super.onPostExecute(data); 
      Log.v("data received", "" + data); 

      JSONArray arr = null; 
      DataBaseHelper mydb = new DataBaseHelper(SignInActivity.this); 
      mydb.getWritableDatabase(); 
      try { 
       arr = new JSONArray(data); 
       for (int i=0; i< arr.length(); i++) { 
        JSONObject jObj = arr.getJSONObject(i); 
        String id_To_Search = jObj.getString("id_To_Search"); 
        ..... 
        mydb.Add_Account(
          recid, matdate, bank, userName); 

       } 
       }catch(JSONException e){ 
        e.printStackTrace(); 
       } 

      pd.dismiss(); 
      Intent intent = new Intent(SignInActivity.this, 
        ShowAllAccounts.class); 
      startActivity(intent); 
     } 
    } 
} 

私は私のAsynTaskを呼び出す必要がありますどこ私は混乱していますか? acct.getEmail()私はhandleSigninResult()を呼び出す必要がありますが、私が電話する場合は、AsynTaskが呼び出され、アプリを開くたびに呼び出されます。実際には私は最初のログイン時にAsynTaskに電話する必要があります...何を考えていますか?

fetchUserdataServerAsync mfetchUserdataServerAsync= new fetchUserdataServerAsync(acct.getEmail()); 
mfetchUserdataServerAsync.execute(); 

答えて

2

あなたのログインステータスを記録することができます。また、MySQliteを使用して記録することもできます。あなたのアプリを開くと、あなたのステータスを判断することができますし、あなたは何をすべきかを選択することができます。

関連する問題