2014-07-21 2 views
0

J'ai essayé d'utiliser une connexion Google+ dans mon application.La méthode getIntentSender() n'est pas définie pour le type ConnectionResult

Alors que l'écriture de code, je reçois ce problème:

La méthode getIntentSender() est définie pour le type ConnectionResult

J'ai ajouté des autorisations pour Internet, getAccounts et usecredentials. J'ai ajouté la bibliothèque de services Google+.

Le code est ici:

package com.niranjan.googleplus; 
import android.content.Intent; 
import android.content.IntentSender.SendIntentException; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.google.android.gms.plus.Plus; 

public class MainActivity extends ActionBarActivity implements ConnectionCallbacks, OnConnectionFailedListener { 

    private GoogleApiClient googleapi; 
    private static final int RC_SIGN_IN = 0; 
    private boolean mIntentInProgress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     googleapi = new GoogleApiClient.Builder(this) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .addApi(Plus.API, null) 
     .addScope(Plus.SCOPE_PLUS_LOGIN) 
     .build(); 

    } 

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

    protected void onStop(){ 
     super.onStop(); 
     if(googleapi.isConnected()){ 
      googleapi.disconnect(); 
     } 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
     if (!mIntentInProgress && result.hasResolution()) { 
      try { 
       mIntentInProgress = true; 
       startIntentSenderForResult(result.getIntentSender(), 
              RC_SIGN_IN, null, 0, 0, 0); 
      } 
      catch (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; 
       googleapi.connect(); 
      } 
     } 
    } 

    protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
     if (requestCode == RC_SIGN_IN) { 
      mIntentInProgress = false; 

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

    public void onConnectionSuspended(int cause) { 
     googleapi.connect(); 
    } 

    @Override 
    public void onConnected(Bundle arg0) { 

     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public void onDisconnected() { 
     // TODO Auto-generated method stub 
    } 
} 

J'ai mis à jour le code, mais au moment de l'exécution, je suis d'obtenir une exception Nullpointer ...

Répondre

9

Utilisation:

result.getResolution().getIntentSender() 

j'avais ce problème et résolu de cette façon.

+0

Merci je l'ai eu - @ Itzik Samara – Niranjan

+0

@Niranjan marquer comme réponse s'il vous plaît est merci –

+0

Maintenant, au moment de l'exécution, je reçois exception de pointeur nul – Niranjan

0

J'ai la solution sur la pile   Dépassement.

Je peux faire fonctionner l'application en utilisant les commandes ci-dessous au lieu de .addApi(Plus.API, null).

  1. addApi(Plus.API)

  2. addApi(Plus.API, PlusOptions.builder().build())

Mais quelle est la différence entre ces deux?

0

result.getStatus(). HasResolution()

ou

if ((result.getStatus(). GetIntentSender())! = Null) { ......... ......... }

Espérons que ça aide.

+0

s'il vous plaît fournir une explication avec votre code –

Questions connexes