当尝试使用google plus登录时,Android应用程序崩溃,没有任何异常

 The-Headless-Horseman 发布于 2023-02-12 19:26

我正在开发一个应用程序,它有一个带有google plus登录按钮的LoginActivity.我已经在google的api控制台中启用了Google+ API并创建了一个Oauth帐户.

这是我的代码的相关部分:

活动类声明:

    public class LoginActivity extends Activity implements OnClickListener,
            ConnectionCallbacks, OnConnectionFailedListener, PlusClient.OnAccessRevokedListener {

  private PlusClient mPlusClient;
  private ConnectionResult mConnectionResult;
  private static final int REQUEST_CODE_SIGN_IN = 2

的onCreate:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

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

的onClick:

     public void onClick(View view) {
        Utils.LOGD("onClick - View = " + view);

        if (view.getId() == R.id.sign_in_button) {
            Utils.LOGD("onClick  : mPlusClient status  = " + mPlusClient);
            if (mPlusClient.isConnected()) {
                Utils.LOGD("onClick - mPlusClient is connected");
                Toast.makeText(this, "you are already signed in!", Toast.LENGTH_LONG).show();
            } else {

                    Utils.LOGD(" mConnectionResult before trying to connect = " + mConnectionResult);
                    if (mConnectionResult == null) {
                        return;
                    }

                try {


                    mConnectionResult.startResolutionForResult(LoginActivity.this, REQUEST_CODE_SIGN_IN);

                } catch (IntentSender.SendIntentException e) {
                    Utils.LOGD( "Exception caught : ) " +  e.getMessage()) ;
                    mPlusClient.connect();
                }
            }

onActivityResult:

       @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {

            if (requestCode == REQUEST_CODE_SIGN_IN) {

                  if (resultCode == RESULT_OK && !mPlusClient.isConnected()
                          && !mPlusClient.isConnecting()) {

                        // This time, connect should succeed.
                        mPlusClient.connect();

                        Utils.LOGD("onActivityResult : mConnectionResult AFTER  trying to connect = " + mConnectionResult);
                        Utils.LOGD(" onActivityResult result code   = " + resultCode);

                  }
            }
      }

问题是在我点击登录按钮和google内置的"loading .."进度条显示后,应用程序突然退出到手机的主屏幕,设备本身没有任何错误显示在logcat中!

此外,当我在应用程序崩溃后回到应用程序时,我看到登录已成功完成,onConnected已被调用,并且我使用我的Google帐户登录.(登录后我有一个editText显示我的名字)

几乎每次我点击按钮时都会发生这种情况,但并非总是如此.香港专业教育学院还注意到,当在模拟器上运行应用程序时,这种崩溃几乎从未发生过(尽管它发生了几次)

我还添加了日志以查看何时调用onConnected onStop和onDestry

这是从我点击登录后到崩溃后不安的logcat:

12-04 17:54:37.464    6516-6516/com.meeba.google D/debug? onClick - View = com.google.android.gms.common.SignInButton@415ea1f8
12-04 17:54:37.464    6516-6516/com.meeba.google D/debug?  onClick  : mPlusClient status  = com.google.android.gms.plus.PlusClient@41570e18
12-04 17:54:37.468    6516-6516/com.meeba.google D/debug?  mConnectionResult before trying to connect = ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{4164c2a8: android.os.BinderProxy@41571528}}
12-04 17:54:37.472    195-360/system_process I/ActivityManager? START {cmp=com.google.android.gms/.plus.activity.AccountSignUpActivity (has extras)} from pid -1
12-04 17:54:37.550    6516-6516/com.meeba.google D/debug? onPause
12-04 17:54:37.550    6516-6516/com.meeba.google D/debug?  onPause:   mPlusClient.isConnected   = false
12-04 17:54:37.550    6516-6516/com.meeba.google D/debug?     onPause: mPlusClient.isConnecting   = false
12-04 17:54:37.589    195-441/system_process I/ActivityManager? START {act=com.google.android.gms.common.account.CHOOSE_ACCOUNT cmp=com.google.android.gms/.common.account.AccountPickerActivity (has extras)} from pid 6544
12-04 17:54:37.789    195-197/system_process D/dalvikvm? GC_CONCURRENT freed 816K, 25% free 13321K/17671K, paused 10ms+11ms
12-04 17:54:37.793    195-227/system_process I/ActivityManager? Displayed com.google.android.gms/.plus.activity.AccountSignUpActivity: +235ms
12-04 17:54:37.937    1199-1210/com.google.android.gsf.login D/dalvikvm? GC_EXPLICIT freed 144K, 7% free 9315K/9927K, paused 1ms+4ms
12-04 17:54:38.187    6544-6546/com.google.android.gms.ui D/dalvikvm? GC_CONCURRENT freed 267K, 4% free 9530K/9927K, paused 2ms+16ms
12-04 17:54:38.211    195-3148/system_process W/InputManagerService? Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@415115c8
12-04 17:54:38.312    631-634/com.google.android.gms D/dalvikvm? GC_CONCURRENT freed 530K, 8% free 10775K/11591K, paused 2ms+15ms
12-04 17:54:38.351    6544-6544/com.google.android.gms.ui D/OpenGLRenderer? Flushing caches (mode 0)
12-04 17:54:38.371    6544-6544/com.google.android.gms.ui D/OpenGLRenderer? Flushing caches (mode 0)
12-04 17:54:38.375    6516-6516/com.meeba.google D/debug? onStop
12-04 17:54:38.375    6516-6516/com.meeba.google D/debug? onDestroy
12-04 17:54:38.418    6516-6516/com.meeba.google D/OpenGLRenderer? Flushing caches (mode 1)

这是返回应用程序后的logcat

   12-04 17:59:21.828  195-441/system_process I/ActivityManager? START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.meeba.google/.activities.LoginActivity bnds=[240,405][360,556]} from pid 406
12-04 17:59:21.988    6516-6516/com.meeba.google D/debug?  mPlusClient = :com.google.android.gms.plus.PlusClient@416af6d8
12-04 17:59:21.992    6516-6516/com.meeba.google D/debug? onCreate finished
12-04 17:59:21.996    6516-6516/com.meeba.google D/debug? onStart
12-04 17:59:22.003    406-406/com.cyanogenmod.trebuchet D/OpenGLRenderer? Flushing caches (mode 1)
12-04 17:59:22.019    6516-6518/com.meeba.google D/dalvikvm? GC_CONCURRENT freed 406K, 5% free 12419K/12999K, paused 2ms+4ms
12-04 17:59:22.019    6516-6516/com.meeba.google D/debug? onResume
12-04 17:59:22.078    406-406/com.cyanogenmod.trebuchet D/OpenGLRenderer? Flushing caches (mode 0)
12-04 17:59:22.230    195-209/system_process D/dalvikvm? GC_EXPLICIT freed 780K, 25% free 13351K/17671K, paused 3ms+12ms
12-04 17:59:22.355    631-634/com.google.android.gms D/dalvikvm? GC_CONCURRENT freed 524K, 8% free 10777K/11591K, paused 3ms+4ms
12-04 17:59:22.378    195-209/system_process I/Process? Sending signal. PID: 6516 SIG: 3
12-04 17:59:22.378    6516-6520/com.meeba.google I/dalvikvm? threadid=3: reacting to signal 3
12-04 17:59:22.382    6516-6520/com.meeba.google I/dalvikvm? Wrote stack traces to '/data/anr/traces.txt'
12-04 17:59:22.429    195-227/system_process I/ActivityManager? Displayed com.meeba.google/.activities.LoginActivity: +553ms
12-04 17:59:22.640    6544-6544/com.google.android.gms.ui D/OpenGLRenderer? Flushing caches (mode 1)
12-04 17:59:22.660    631-711/com.google.android.gms I/qtaguid? Failed write_ctrl(u 90) res=-1 errno=22
12-04 17:59:22.683    6544-6546/com.google.android.gms.ui D/dalvikvm? GC_CONCURRENT freed 458K, 7% free 9478K/10119K, paused 1ms+3ms
12-04 17:59:22.683    631-711/com.google.android.gms I/qtaguid? Untagging socket 90 failed errno=-22
12-04 17:59:22.683    631-711/com.google.android.gms W/NetworkManagementSocketTagger? untagSocket(90) failed with errno -22
12-04 17:59:22.707    6516-6516/com.meeba.google D/debug?  onConnected started
12-04 17:59:22.707    6516-6516/com.meeba.google D/debug? mPlusClient in onConnected is =com.google.android.gms.plus.PlusClient@416af6d8

在调试之后,我看到应用程序在mConnectionResult.startResolutionForResult(LoginActivity.this,REQUEST_CODE_SIGN_IN)行中激动地崩溃了

对错误或我该怎么做的任何想法?提前致谢 :)

编辑:添加了manifest.xml




    
    
    
    
    
    

    
    


    

    

        
            
                
                

                
            
        

        

        

        

            
                
                
            

        

        
            
        

        
        
        
        

    


David Wasser.. 24

android:noHistory="true"从清单中的定义中删除LoginActivity.我非常确定该noHistory设置会导致Android LoginActivity在启动Google+登录活动时完成此操作.由于活动已经完成,因此无法调用任何内容onActivityResult().你的应用程序实际上并没有崩溃,它刚刚完成.

如果你想确保用户没有回到你的LoginActivity身边,你将不得不以另一种方式解决这个问题(覆盖onBackPressed()或其他方式).

1 个回答
  • android:noHistory="true"从清单中的<activity>定义中删除LoginActivity.我非常确定该noHistory设置会导致Android LoginActivity在启动Google+登录活动时完成此操作.由于活动已经完成,因此无法调用任何内容onActivityResult().你的应用程序实际上并没有崩溃,它刚刚完成.

    如果你想确保用户没有回到你的LoginActivity身边,你将不得不以另一种方式解决这个问题(覆盖onBackPressed()或其他方式).

    2023-02-12 19:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有