2

アプリに Google プラス サインインを追加しました。[Google でサインイン] ボタンをクリックすると、アプリがフリーズし、応答しなくなります。アプリを強制終了して再起動すると、サインインは問題なく行われます。何がうまくいかないのですか?コードは以下です。レイアウト

            <com.google.android.gms.common.SignInButton
                android:id="@+id/sign_in_button"
                android:layout_width="match_parent"
                android:layout_height="55dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:elevation="10dp"/>

そしてJavaコードは

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_launcher);
         mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this).addApi(Plus.API)
            .addScope(Plus.SCOPE_PLUS_LOGIN).build();

    mSignInButton = (SignInButton) findViewById(R.id.sign_in_button);
    mSignInButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!mGoogleApiClient.isConnecting()) {
                mSignInClicked = true;
                resolveSignInError();
            }
        }
    });
    mSignInButton.setSize(SignInButton.SIZE_WIDE);
}
private void resolveSignInError() {
    if (mConnectionResult.hasResolution()) {
        try {
            mIntentInProgress = true;
            startIntentSenderForResult(mConnectionResult.getResolution()
                    .getIntentSender(), RC_SIGN_IN, null, 0, 0, 0);
        } catch (IntentSender.SendIntentException e) {
            // The intent was canceled before it was sent. Return to the
            // default
            // state and attempt to connect to get an updated
            // ConnectionResult.
            mIntentInProgress = false;
            mGoogleApiClient.connect();
        }
    }
}

protected void onStart() {
    super.onStart();
    mGoogleApiClient.connect();
}

protected void onStop() {
    super.onStop();

    if (mGoogleApiClient.isConnected()) {
        mGoogleApiClient.disconnect();
    }
}

@Override
public void onConnectionFailed(ConnectionResult result) {
    if (!mIntentInProgress) {
        // Store the ConnectionResult so that we can use it later when the
        // user clicks
        // 'sign-in'.
        mConnectionResult = result;

        if (mSignInClicked) {
            // The user has already clicked 'sign-in' so we attempt to
            // resolve all
            // errors until the user is signed in, or they cancel.
            resolveSignInError();
        }
    }
}

@Override
public void onConnected(Bundle arg0) {
    Log.e("Connection","success");   
}

@Override
public void onConnectionSuspended(int arg0) {
    // TODO Auto-generated method stub

}



protected void onActivityResult(int requestCode, int responseCode,
                                Intent intent) {
    if (requestCode == RC_SIGN_IN) {
        if (responseCode != RESULT_OK) {
            mSignInClicked = false;
        }

        mIntentInProgress = false;

        if (!mGoogleApiClient.isConnecting()) {
            mGoogleApiClient.connect();
        }
    }
}

logcat は、結果コードが -1 であり、インテントが null であることを示しました。onActivityResultそして、mGoogleApi.connect()が再度呼び出されます。アプリはその段階でフリーズするだけで、コールバックは発生しません。私は何を間違っていますか?

4

2 に答える 2

0

私も同じ問題を抱えていました。私の に論理的な誤りがありましたonActivityResult。方法を確認してくださいonActivityResult。そうすれば、あなたの問題だけが解決されます。

于 2015-10-19T11:33:34.970 に答える