Не удалось создать PlusClient

    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();

Ответ 1

Если у кого-то еще есть эта проблема: теперь 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();

Ответ 2

Ошибка связана с тем, что сейчас PlayClient устарел, как утверждает Luigi04.

Как работа, я получил эту работу, понизив версию игровых сервисов в зависимостях gradle до 'com.google.android.gms:play-services:6.1.71', как указано здесь: fooobar.com/questions/486280/...

Ответ 3

У меня такая же проблема, проблема в том, что я использовал старую версию Google Play. Поэтому, пожалуйста, обновите его до последней версии. Помните, что новая версия загружается в папку sdk. Если ранее вы импортировали сервисы google-play в свою рабочую область, вы должны удалить его и добавить новую версию

Ответ 4

Сама банка не может быть использована. Весь проект google play services lib должен быть импортирован, т.е. скопирован из SDK.

См. шаг 5 Google+ Quickstart:

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.