2013-07-25 24 views
5

Herhangi bir sorun yaşamadan google ile giriş yaptım. Bir etkinlik yerine bir parça kullanıyorum. Samsung galaksilerindeki kodun test edilmesi, signin sisteminin boşta kalması ve onConnected yöntemini çağırmamasıdır. Bu, şartlar ve koşullar gösterildiğinde ilk defa gerçekleşir. Herhangi bir tavsiye?Android ile giriş yapın Google plus ile ilk giriş yapın.

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

geri yerine onConnectionFailed muyuz? – Lee

+0

Hayır, hiçbir şey alıyorum. Ancak tuhaf bir şekilde tekrar bağlanmayı denerseniz, başarısız olmadan Bağlantılı'yı çağırır. –

+0

İlgili Etkinlik kodunun ilgili bitlerini kaydeder misiniz? Etkinlik yaşam döngüsünde nasıl bağlı olduğunuzu görmek isterim. – Lee

cevap

0

Bu catch bloğunu işlemek gerekir:

catch (UserRecoverableAuthException userRecoverableException) { 
    startActivity(userRecoverableException.getIntent()); 
} 
1

Aynı sorunla karşı karşıya ve ben Fragment yöntemi onResume geçersiz kılarak düzelttim İşte benim kodudur.

@Override 
    public void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     mGoogleApiClient.connect(); 
    } 

Geçerli çözümünün olup olmadığından emin değilim.

sayesinde Rahul

İlgili konular