2013-02-27 90 views
11
import com.google.android.gms.common.ConnectionResult; 
    import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks; 
    import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener; 
    import com.google.android.gms.plus.GooglePlusUtil; 
    import com.google.android.gms.plus.PlusClient; 
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.app.ProgressDialog; 
    import android.content.Intent; 
    import android.content.IntentSender.SendIntentException; 
    import android.util.Log; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.Toast; 

    public class MainActivity extends Activity implements ConnectionCallbacks, 
      OnConnectionFailedListener { 

     private static final int REQUEST_CODE_RESOLVE_ERR = 7; 
     private ProgressDialog mConnectionProgressDialog; 
     private PlusClient mPlusClient; 
     private ConnectionResult mConnectionResult; 
     private String TAG = "GmailLogin"; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      int errorCode = GooglePlusUtil.checkGooglePlusApp(this); 
      if (errorCode != GooglePlusUtil.SUCCESS) { 
       GooglePlusUtil.getErrorDialog(errorCode, this, 0).show(); 
      } else { 

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


       mConnectionProgressDialog = new ProgressDialog(this); 
       mConnectionProgressDialog.setMessage("Signing in..."); 

       Button signInButton = (Button) findViewById(R.id.sign_in_button); 
       signInButton.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         if (mConnectionResult == null) { 
          mConnectionProgressDialog.show(); 
         } else { 
          try { 
           mConnectionResult 
             .startResolutionForResult(
               MainActivity.this, 
               REQUEST_CODE_RESOLVE_ERR); 
          } catch (SendIntentException e) { 
           // Try connecting again. 
           mConnectionResult = null; 
           mPlusClient.connect(); 
          } 
         } 
        } 
       }); 
      } 

     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.main, menu); 
      return true; 
     } 

     @Override 
     public void onConnectionFailed(ConnectionResult result) { 
      if (result.hasResolution()) { 
       try { 
        result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); 
       } catch (SendIntentException e) { 
        mPlusClient.connect(); 
       } 
      } 
      // Save the result and resolve the connection failure upon a user click. 
      mConnectionResult = result; 
     } 

     @Override 
     protected void onActivityResult(int requestCode, int responseCode, 
       Intent intent) { 
      if (requestCode == REQUEST_CODE_RESOLVE_ERR 
        && responseCode == RESULT_OK) { 
       mConnectionResult = null; 
       mPlusClient.connect(); 
      } 
     } 

     @Override 
     public void onConnected() { 
      String accountName = mPlusClient.getAccountName(); 
      Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG) 
        .show(); 
     } 

     @Override 
     public void onDisconnected() { 
      Log.d(TAG, "disconnected"); 
     } 

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

     @Override 
     protected void onStop() { 
      super.onStop(); 
      mPlusClient.disconnect(); 
     } 

     } 

मैं इस कोड संकलन नहीं कर सकते क्योंकि यह कहते हैं:PlusClient निर्माण करने में असमर्थ

PlusClient.Builder

mPlusClient = new PlusClient.Builder(this, this, this) 
     .setVisibleActivities("http://schemas.google.com/AddActivity", 
     "http://schemas.google.com/BuyActivity").build(); 
भी

में कम से एक प्रकार

को हल नहीं किया जा सकता है onConnected()

मैं के लिए accountName

String accountName = mPlusClient.getAccountName(); 
+0

'गूगल + SDK' ?? मैं वर्तमान में 'google-play-services.jar' का उपयोग कर रहा हूं। – user1537779

+0

मुझे 'एंड्रॉइड एसडीके प्रबंधक' में 'Google+ एसडीके' नहीं मिला। क्या आप मुझे एक लिंक प्रदान कर सकते हैं और एक गाइड बहुत अच्छा होगा। – user1537779

+1

हां, क्षमा करें मैं स्पष्ट नहीं था कि Google+ एसडीके Google Play सेवाओं के भीतर है। क्या आपने Google Play सेवाओं को नवीनतम संस्करण (वर्तमान संशोधित 5) में अपडेट किया था? – BrettJ

उत्तर

1

मैं एक ही समस्या मिल गया है null मिलता है, मुद्दा यह है कि मैं उपयोग कर रहा था गूगल के पुराने संस्करण Play की सेवा थी। तो कृपया इसे नवीनतम संस्करण में अपडेट करें। याद रखें कि एसडीके फ़ोल्डर में नया संस्करण डाउनलोड किया गया है। यदि आपने पहले अपने वर्कस्पेस में Google-play-Services आयात किए हैं तो आपको इसे हटाना होगा और नया संस्करण

+4

मैंने यह किया लेकिन समस्या बनी हुई है .. –

0

स्वयं को जार का उपयोग नहीं किया जा सकता है। संपूर्ण Google play सेवाएं lib प्रोजेक्ट को आयात करने की आवश्यकता है यानी एसडीके से कॉपी किया गया है।

कदम Google+ Quickstart के 5 देखें:

5. Import the Google Play Services library project. 

Select File > Import > Android > Existing Android Code Into Workspace and click Next. 
Select Browse.... Enter <android-sdk-folder>/extras/google/google_play_services/. 
Select google-play-services_lib. Click Finish to import. 
+1

आप इसे धीरे-धीरे में कर सकते हैं: 'com.google.api-client संकलित करें: google-api-client-android: 1.17। +' –

+0

http://developer.android से .com/google/play-services/setup.html, आपको उस लाइब्रेरी की प्रतिलिपि का संदर्भ देना चाहिए जिसे आपने अपने विकास कार्यक्षेत्र में कॉपी किया है- आपको सीधे एंड्रॉइड एसडीके निर्देशिका से लाइब्रेरी का संदर्भ नहीं देना चाहिए। – Robert

10

किसी को अभी भी इस समस्या है: PlayClient अब मान्य नहीं है। 'नई' जाने का रास्ता यहाँ वर्णित है: http://android-developers.blogspot.com/2014/02/new-client-api-model-in-google-play.html

mClient = new GoogleApiClient.Builder(this) 
     .addApi(Drive.API) 
     .addScope(Drive.SCOPE_FILE) 
     .addApi(Plus.API, plusOptions) 
     .addScope(Plus.SCOPE_PLUS_LOGIN) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
7

त्रुटि है क्योंकि PlayClient अब पदावनत है Luigi04 राज्यों के रूप में,।

एक काम के रूप में चारों ओर, मैं Gradle निर्भरता में Play सेवाएं संस्करण पदावनति द्वारा इस काम के 'com.google.android.gms:play-services:6.1.71' के रूप में यहां कहा गया है,: https://stackoverflow.com/a/27637059/2161698