2013-02-27 93 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()

我得到nullaccountName

String accountName = mPlusClient.getAccountName(); 
+0

'Google+的SDK'?我目前使用'google-play-services.jar'。 – user1537779 2013-02-28 04:46:22

+0

我無法在'Android SDK Manager'中找到'Google+ SDK'。你能給我提供一個鏈接,一個指南會很棒。 – user1537779 2013-02-28 04:49:37

+1

是的,抱歉,我不清楚Google+ SDK是否位於Google Play服務中。您是否將Google Play服務更新爲最新版本(最新版本5)? – BrettJ 2013-02-28 18:53:07

回答

1

我有同樣的問題,這個問題是,我用舊版本的谷歌Play的服務。所以請更新到最新版本。請記住,新版本是在sdk文件夾中下載的。如果您之前已將谷歌播放服務導入您的工作區,則必須將其刪除並添加新版本

+4

我這樣做了,但問題仍然存在.. – 2013-06-03 17:15:50

0

該jar本身不能使用。整個谷歌播放服務lib項目需要導入,即從SDK複製。

見步驟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

您可以在gradle中執行此操作:compile'c​​om.google.api-client:google-api-client-android:1.17。+' – 2015-02-24 14:58:04

+0

From http://developer.android .com/google/play-services/setup.html,您應該引用複製到開發工作區的庫的副本 - 不應直接從Android SDK目錄中引用庫。 – Robert 2015-03-04 00:48:20

7

這個錯誤是因爲PlayClient現在已經過時了,Luigi04狀態。

由於周圍的工作,我被降級的gradle這個依賴播放服務版本致力於'com.google.android.gms:play-services:6.1.71',如前所述這裏: https://stackoverflow.com/a/27637059/2161698