Android Google Play游戏API,未调用onActivityResult

时间:2015-07-14 21:09:09

标签: java android google-play-services google-play-games google-plus-signin

我最近将新玩游戏api集成到我的应用程序WatchStop(下面的链接)中,我很难管理退出流程。

如果用户从排行榜或成就用户界面退出(Google的用户界面),则不会在本地签名。调用mGoogleApi.isConnected()时,GoogleApiClient仍会报告为已连接。另外,onConnectionFailed()onActivityResult()都没有被调用,所以我无法知道他们是否已退出。

我看到有些人在之前版本的API中使用onActivityResult()取得了成功,但除了谷歌以外的新API没有找到任何有关该流程的信息:

  

实现onActivityResult()以处理连接解析的结果:

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == RC_SIGN_IN) { mSignInClicked = false; mResolvingConnectionFailure = false; if (resultCode == RESULT_OK) { mGoogleApiClient.connect(); } else { // Bring up an error dialog to alert the user that sign-in // failed. The R.string.signin_failure should reference an error // string in your strings.xml file that tells the user they // could not be signed in, such as "Unable to sign in." BaseGameUtils.showActivityResultError(this, requestCode, resultCode, R.string.signin_failure); } } }

我以这种方式实现了它,试图听取注销:

@Override public void onActivityResult(int requestCode, int responseCode, Intent intent) { super.onActivityResult(requestCode, responseCode, intent); Toast.makeText(getApplicationContext(), CLASS_NAME + ".onActivityResult() - RESPONSE CODE: " + responseCode + ", REQUEST_CODE: " + requestCode, Toast.LENGTH_LONG).show(); if (requestCode == RC_SIGN_IN && responseCode == RESULT_OK) { mResolvingConnectionFailure = false; if (mGoogleApiClient != null) { mGoogleApiClient.connect(); } } if (responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED && (requestCode == REQUEST_LEADERBOARDS || requestCode == REQUEST_ACHIEVEMENTS)) { mGoogleApiClient.disconnect(); signOutLocal(); } }

上面代码中的toast永远不会显示,告诉我该方法永远不会被调用。我从此调用此活动的扩展BaseGameActivity(我强制扩展AppCompatActivity)。我甚至尝试重写BaseGameActivity onActivityResult()以静态调用我的活动中的那个无效(可能因为它本身不被称为idk)。

我可以做些什么来确保如果玩家从Google用户界面退出,他们也会在本地注销?如果他们点击“查看排行榜”和“排行榜”,则无需修复此问题。或者'查看成就',它们会因为本地而崩溃,api仍然认为它们是连接的。

1 个答案:

答案 0 :(得分:0)

事实证明我上面的代码工作正常,我检查了错误的构建。对于那些感兴趣的人,您只需要寻找

responseCode == GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED

in

onActivityResult()

你可以知道你已经没有连接了,所以你应该拨打你的退出方法。请参阅上面的摘要。