【问题标题】:GoogleApiClient.isConnected() return always falseGoogleApiClient.isConnected() 总是返回 false
【发布时间】:2014-06-08 07:12:32
【问题描述】:

我正在尝试在我的游戏中实现排行榜。 我写了这段代码:

GoogleApiClient mGoogleApiClient;
mGoogleApiClient = new GoogleApiClient.Builder(this)
    .addApi(Drive.API)
    .addScope(Drive.SCOPE_FILE)
    .build();

mGoogleApiClient.connect();
//....

while(!mGoogleApiClient.isConnected())Log.d("","NO CONNECTED");
Games.Leaderboards.submitScore(mGoogleApiClient, "MY_LEADERBOARD_ID",newscore);

为什么mGoogleApiClient.isConnected()总是返回假?

EDIT1:好的,现在它可以工作了(我已将 Drive.API 更改为 Games.APIDrive.SCOPE_FILE 更改为 Games.SCOPE_GAME)但是当我调用 submitScore() 时,即使日志中一切正常,排行榜仍然存在空的。如何检查submitScore() 是否真的有效?

EDIT2:我用过

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient, "MY_LEADERBOARD_ID"), REQ_LEADERBOARD);

一切正常!

【问题讨论】:

    标签: android google-play-services google-play-games


    【解决方案1】:

    您需要向 Builder(或 GoogleApiClient)添加几个回调侦听器。最有可能发生的是登录失败,因为您还没有权限。您需要处理该故障,以便用户可以授权您的应用。

    更多阅读:http://www.androidpolice.com/2014/02/14/for-developers-google-play-services-4-2-includes-new-client-api-model-consolidates-connections-under-one-object/

    【讨论】:

      【解决方案2】:

      我发现出于某种原因,虽然 .connect() 是异步的,并且之后立即等待一段时间循环是合乎逻辑的,但显然出于某种原因仍然需要在主 UI 线程上执行一些事情,因此为什么您的 isConnected() 总是返回 false,因为该 while 循环本质上是阻塞 .connect()。如果我能猜到为什么我会假设调用 .connect() 会执行一段代码,该代码会将自己置于主 UI 线程队列中以稍后执行,并且在那里有那个 while 循环,你将永远阻塞那段代码来自执行/连接。

      【讨论】:

      • 觉得有趣的是,人们如何否定正确的回答,因为他们的父母在成长过程中没有给予他们足够的关注。现实检查。我是对的,你错了,孩子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2021-11-05
      • 2018-11-05
      • 2019-05-06
      • 2017-04-29
      • 2013-04-30
      相关资源
      最近更新 更多