5

問題なくGoogleでサインインを実装しました。アクティビティの代わりにフラグメントを使用しています。samsung galaxy でコードをテストすると、サインイン システムがアイドル状態になり、onConnected メソッドが呼び出されません。これは、利用規約が表示されたときに初めて発生します。何かアドバイス?これが私のコードです:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
   super.onActivityCreated(savedInstanceState);
   initGoogle()
}


private void initGoogle() {
    mPlusClient = new PlusClient.Builder(getActivity() , this , this).setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity").build();

}

public void connectWithPlus() {
    launchProgressScreen();
    if(mPlusClient != null && !mPlusClient.isConnected()){
         mPlusClient.connect();
    }else{ 
        mPlusClient.clearDefaultAccount();
        mPlusClient.disconnect();
        mPlusClient.connect();
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_RESOLVE_ERR) {
    mConnectionResult = null;
    connectWithPlus();  
}
}
@Override
public void onConnectionFailed(ConnectionResult result) {
    if (result!= null && result.hasResolution()) {
        try {
            result.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLVE_ERR);
        } catch (SendIntentException e) {
            connectWithPlus();
        }
        mConnectionResult = result;
    }else{
        onTaskResult(ProgressAlert.TASK_CANCEL_GOOGLE_LOGIN, null);
    }
}
@Override
public void onConnected(Bundle connectionHint) {
    AsyncTask<Object, Void, String> task = new AsyncTask<Object, Void, String>()    {
        @Override
        protected String doInBackground(Object... params) {
            String token = null;
            try {
                token = GoogleAuthUtil.getToken(getActivity(), mPlusClient.getAccountName(),    
                        "oauth2:" + Scopes.PLUS_LOGIN );
            } catch (UserRecoverableAuthException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (GoogleAuthException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return token;
        }

        @Override
        protected void onPostExecute(String token){
            getAuthDelegate().setToken(token, SocialAccount.google);
            getAuthDelegate().loginUsingGoogle(token, new HashMap<String, String>());
        }
    };
    task.execute();
}

@Override
public void onDisconnected() {
    Log.w("Google Login", "called disconnected");
}

@Override
public void onClick(View v) {
    connectWithPlus();
}
4

2 に答える 2