强制关闭 GoogleApiClient.connect()

Posted

技术标签:

【中文标题】强制关闭 GoogleApiClient.connect()【英文标题】:Force close on GoogleApiClient.connect() 【发布时间】:2015-04-03 11:38:36 【问题描述】:

我不知道为什么我的应用在单击 g+singin 按钮时会强制关闭。我刚刚实现了一个 g+ 登录按钮,单击该按钮会调用 GoogleApiClient.connect() 方法。但是如果我评论 GoogleApiClient.connect() 方法,应用程序不会强制关闭。实际上,如果连接失败 onConnectionFailed() 方法应该被调用,但强制关闭。 我已将错误消息作为图像放在底部............

package com.playservices.murali.playservices;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.games.Games;
import com.google.android.gms.plus.Plus;
import com.google.example.games.basegameutils.BaseGameUtils;


public class MainActivity extends ActionBarActivity implements
    View.OnClickListener,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener 
private static final String TAG = "asdf";
private GoogleApiClient mGoogleApiClient;
private boolean mResolvingConnectionFailure = false;
private boolean mAutoStartSignInFlow = true;
private boolean mSignInClicked = false;

private static int RC_SIGN_IN = 9001;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.sign_in_button).setOnClickListener(this);
    findViewById(R.id.sign_out_button).setOnClickListener(this);
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            .build();
  

@Override
protected void onStart()




@Override
protected void onStop()



@Override
public void onConnected(Bundle bundle) 


@Override
public void onConnectionSuspended(int i) 



@Override
public void onConnectionFailed(ConnectionResult connectionResult) 



@Override
public void onClick(View view) 
    if (view.getId() == R.id.sign_in_button) 
        // start the asynchronous sign in flow
        mSignInClicked = true;
        mGoogleApiClient.connect();
    
    else if (view.getId() == R.id.sign_out_button) 
        // sign out.
        mSignInClicked = false;
        Games.signOut(mGoogleApiClient);

        // show sign-in button, hide the sign-out button
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
        findViewById(R.id.sign_out_button).setVisibility(View.GONE);
    



【问题讨论】:

clueless why app is get force closed on GoogleApiClient.connect()的可能重复 【参考方案1】:

尝试将我的代码移植到你的 http://pastebin.com/gAspppbh 你几乎遗漏了一些东西!

【讨论】:

【参考方案2】:

某些设备不提供用于获取位置的 GoogleApiClient。我已经面临这个问题。所以我可以将 GoogleApiClient 更改为 FusedLocationProviderClient。我已经解决了我的问题。有关此问题的更多信息,请访问以下链接

Android GPS, Location Manager

【讨论】:

以上是关于强制关闭 GoogleApiClient.connect()的主要内容,如果未能解决你的问题,请参考以下文章

怎样使用ADB命令强制关闭蓝牙!

强制关闭一个正在运行的程序应该怎么做?

如何强制关闭Ubuntu无响应程序

Macbook怎么强制关闭后台程序?Macbook强制关闭后台程序的方法

如何处理离子应用程序中的强制关闭事件?

android 怎么调用强制关闭