GoogleApiClient Games.API连接错误

时间:2017-02-25 00:24:03

标签: android google-play-services google-api-client

我想使用Play游戏服务,因此我将GoogleApiClient与Games.API一起使用并调用方法connect()。但是它总是在onConnectionFailed()中给出错误RESOLUTION_REQUIRED。

let m=3 and n=4 in

let a=ref 0 and b=ref 0 in
if(m > n)
then
(
    a:=n;
    b:=m;
)
else
(
    a:=m;
    b:=n;
);

Printf.printf "a=%d b=%d\n" !a !b;;

但如果我使用Auth.API而不是Games.API,连接成功并调用方法onConnected()。

public class MainActivity extends Activity implements
    ConnectionCallbacks,
    OnConnectionFailedListener {
GoogleApiClient googleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Games.API).addScope(Games.SCOPE_GAMES)
            .build();    }

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    //ConnectionResult{statusCode=RESOLUTION_REQUIRED, resolution=PendingIntent{dd739ef: android.os.BinderProxy@624acfc}, message=null}
}

我使用模拟器,模拟器中的播放服务版本是10.0,所以我也在gradle build 10.0中设置版本

public class MainActivity extends Activity implements
    ConnectionCallbacks,
    OnConnectionFailedListener {
GoogleApiClient googleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Auth.GOOGLE_SIGN_IN_API)
            .build();
}

@Override
public void onConnected(Bundle connectionHint) {
    //Success
}

我在Google Play fails to connect, statusCode=RESOLUTION_REQUIRED发现了同样的问题,但作者没有得到任何答案。

1 个答案:

答案 0 :(得分:0)

基于ConnectionResult,错误代码为RESOLUTION_REQUIRED

  

完成连接需要某种形式的解决方案。将以startResolutionForResult(Activity, int)开始提供解决方案。如果返回的结果为RESULT_OK,则进一步尝试连接应该完成或继续下一个需要解决的问题。

除此之外,您还可以查看如何处理连接失败,如Manually managed connections中所述。如上所述,

  

当您的应用收到onConnectionFailed()}回调电话时,您应该在提供的hasResolution()对象上拨打ConnectionResult。如果它返回true,则您的应用可以通过调用ConnectionResult对象上的startResolutionForResult()来请求用户立即采取措施来解决错误。在这种情况下,startResolutionForResult()方法与startActivityForResult()的行为相同,并启动适合上下文的活动,以帮助用户解决错误。