android-谷歌加登录中的空指针异常

android-谷歌加登录中的空指针异常,第1张

概述我是android新手.我在我的应用程序中集成了googleplus登录名.但是它在mConnectionResult.hasResolution中显示了空指针异常这是我的代码btnSignIn=(SignInButton)findViewById(R.id.btn_sign_in);btnSignIn.setOnClickListener(this);mGoogleApiClient=newGoo

我是android新手.我在我的应用程序中集成了Google plus登录名.但是它在mConnectionResult.hasResolution中显示了空指针异常
这是我的代码

 btnSignIn = (SignInbutton) findVIEwByID(R.ID.btn_sign_in);    btnSignIn.setonClickListener(this);    mGoogleapiclient = new Googleapiclient.Builder(this)            .addConnectionCallbacks(this)            .addOnConnectionFailedListener(this).addAPI(Plus.API)            .addScope(Plus.ScopE_PLUS_LOGIN).build();}@OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent data) {    callbackManager.onActivityResult(requestCode, resultCode, data);    if (requestCode == RC_SIGN_IN) {        if (resultCode != RESulT_OK) {            mSignInClicked = false;        }        mIntentInProgress = false;        if (!mGoogleapiclient.isConnecting()) {            mGoogleapiclient.connect();        }    }}protected voID onStart() {    super.onStart();    mGoogleapiclient.connect();}protected voID onStop() {    super.onStop();    if (mGoogleapiclient.isConnected()) {        mGoogleapiclient.disconnect();    }}/** * Method to resolve any signin errors */private voID resolveSignInError() {    if (mConnectionResult.hasResolution()) {        try {            mIntentInProgress = true;            mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);        } catch (IntentSender.SendIntentException e) {            mIntentInProgress = false;            mGoogleapiclient.connect();        }    }}@OverrIDepublic voID onConnectionFailed(ConnectionResult result) {    if (!result.hasResolution()) {        GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,                0).show();        return;    }    if (!mIntentInProgress) {        // Store the ConnectionResult for later usage        mConnectionResult = result;        if (mSignInClicked) {            // The user has already clicked 'sign-in' so we attempt to            // resolve all            // errors until the user is signed in, or they cancel.            resolveSignInError();        }    }}@OverrIDepublic voID onConnected(Bundle arg0) {    mSignInClicked = false;    if (temp == true) {        type = "2";        Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();        Intent i = new Intent(RegisterSkipActivity.this, MainActivity.class);        i.putExtra("Login", type);        startActivity(i);        temp = false;    }}@OverrIDepublic voID onConnectionSuspended(int arg0) {    mGoogleapiclient.connect();    //updateUI(false);}@OverrIDepublic voID onClick(VIEw v) {    // Signin button clicked    signInWithGplus();    temp = true;}/** * Sign-in into Google */private voID signInWithGplus() {    if (!mGoogleapiclient.isConnecting()) {        mSignInClicked = true;        resolveSignInError();    }}

resolveSignInError()中此行的Nullpointer异常

  if (mConnectionResult.hasResolution()) 

请帮我.这是Logcat

  java.lang.NullPointerException        at com.techIEweb.solutions.pickeronline.RegisterSkipActivity.resolveSignInError(RegisterSkipActivity.java:214)        at com.techIEweb.solutions.pickeronline.RegisterSkipActivity.signInWithGplus(RegisterSkipActivity.java:284)        at com.techIEweb.solutions.pickeronline.RegisterSkipActivity.onClick(RegisterSkipActivity.java:273)        at com.Google.androID.gms.common.SignInbutton.onClick(UnkNown Source)        at androID.vIEw.VIEw.performClick(VIEw.java:4439)        at androID.Widget.button.performClick(button.java:139)        at androID.vIEw.VIEw$PerformClick.run(VIEw.java:18395)        at androID.os.Handler.handleCallback(Handler.java:725)        at androID.os.Handler.dispatchMessage(Handler.java:92)        at androID.os.Looper.loop(Looper.java:176)        at androID.app.ActivityThread.main(ActivityThread.java:5317)        at java.lang.reflect.Method.invokeNative(Native Method)        at java.lang.reflect.Method.invoke(Method.java:511)        at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)        at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:869)        at dalvik.system.NativeStart.main(Native Method)

解决方法:

您正在使用旧的Google Sign方法(在play services 8.3之前).如果您构建了一个使用旧版Google登录的应用,那么您将构建一个尝试连接到Googleapiclient的应用.此时,向用户显示了一个帐户选择器和/或一个权限对话框,这两者都会触发连接失败.

您必须处理这些连接失败才能登录.一旦Googleapiclient连接成功,便认为该用户已登录,并且可以授予权限.

请参考codelab by google 以处理此类故障并使用该方法实施登录.

现在最好的选择是尝试使用带播放服务8.3的新Google登录.它的摩擦更少,并且可以自动为您处理此类连接故障.

请参阅new Google-Sign In.

另请查看官方androID开发人员博客以获取更多信息.

Android Developers Blog- Identity #1

Android Developers Blog- Identity #2

总结

以上是内存溢出为你收集整理的android-谷歌加登录中的空指针异常全部内容,希望文章能够帮你解决android-谷歌加登录中的空指针异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存