1

次の手順に従って、アプリケーション (Google Drive Android API) でドライブにログインします: https://developers.google.com/drive/android/auth

debug.keystore を使用して SHA1 フィンガープリントを生成しました。デバイスでアプリケーションを実行すると、最初の接続は失敗しますが、hasResolution は true であり、アカウント選択ダイアログが表示されます。問題は、アカウントを選択する前に onActivityResult メソッドがすぐに呼び出されることです。もちろん、resultCode は問題ありません。

private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //some other code...

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
}

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

@Override
protected void onStop() {
    if(mGoogleApiClient != null)
        mGoogleApiClient.disconnect();
    super.onStop();
}

@Override
public void onConnected(Bundle bundle) {
    Log.d(TAG, "DRIVE: connected");
    CONNECTED = true;
}

@Override
public void onConnectionSuspended(int i) {
    Log.d(TAG, "DRIVE: disconnected");
    CONNECTED = false;
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Log.d(TAG, "DRIVE: connection failed");
    CONNECTED = false;

    if (connectionResult.hasResolution()) {
        try {
            connectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLUTION);
        } catch (IntentSender.SendIntentException e) {
            //mGoogleApiClient.connect(); whit or whitout is the same...
        }
    } else {
        GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 0).show();
    }
}

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data){
    switch (requestCode) {
        case REQUEST_CODE_RESOLUTION:
            if (resultCode == RESULT_OK) {
                mGoogleApiClient.connect();
            }
            break;
        case REQUEST_CODE_CREATOR:
            if(resultCode != RESULT_OK)
                newNotification("Upload Fallito", "...", android.R.drawable.ic_dialog_alert);
            break;

    }
}
4

1 に答える 1

0

ここで何が問題なのかを分析する時間がないため、ここでテストに使用するコードを入手して試してみることをお勧めします。かわいくないけど、コンパクトで機能的。認証迷路は README で触れられています。ただ、あなたの環境がわからないので、役に立たないかもしれません。

于 2014-03-17T18:55:23.520 に答える