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

4 に答える 4

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();
于 2014-12-14T14:06:42.787 に答える
1

同じ問題があります。問題は、古いバージョンのGooglePlayサービスを使用していたことです。そのため、最新バージョンに更新してください。新しいバージョンがsdkフォルダーにダウンロードされることを忘れないでください。以前にgoogle-play-servicesをワークスペースにインポートしたことがある場合は、それを削除して新しいバージョンを追加する必要があります

于 2013-03-11T12:29:48.763 に答える
0

ジャー単体では使用できません。Google Play Services lib プロジェクト全体をインポート、つまり SDK からコピーする必要があります。

Google+ クイックスタートのステップ 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.
于 2014-04-10T08:01:45.943 に答える