无法构建PlusClient

时间:2013-02-27 09:17:33

标签: android google-plus

    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.Builder无法解析为类型

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

也在onConnected()

null

获得accountName
String accountName = mPlusClient.getAccountName();

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:7)

错误是因为现在不再使用PlayClient,正如Luigi04所述。

作为一种解决方法,我通过将gradle依赖项中的play服务版本降级为'com.google.android.gms:play-services:6.1.71'来实现此目的,如下所述: https://stackoverflow.com/a/27637059/2161698

答案 2 :(得分:1)

我遇到了同样的问题,问题是我使用的是旧版Google Play服务。所以请将它更新到最新版本。请记住,新版本已下载到sdk文件夹中。如果您之前已将google-play-services导入工作区,则必须将其删除并添加新版本

答案 3 :(得分:0)

罐子本身不能使用。需要导入整个Google Play服务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.