- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
好的,我目前正在我的应用程序中实现 Google Drive API 连接,因此我让用户通过他们的 Google Plus 帐户登录。我的问题是 GoogleApiClient.isConnected()
似乎并不总是准确的。问题是,如果我登录(使用 Android Google Plus 文档 here 中定义的过程,然后我尝试通过调用此方法撤销应用程序对用户 Google Play 帐户的访问权限:
/**
* Revokes the user access given to application and disconnects from their account
*/
public void onGoogleRevokeAndDisconnect()
{
if(mGoogleApiClient.isConnected()) {
//clear account
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
//revoke and disconnect
Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status arg0) {
Toast.makeText(MainActivity.this, "Account disconnected succesfully!",Toast.LENGTH_LONG).show();
mGoogleApiClient.isConnected();
//mGoogleApiClient.disconnect();//TODO: Find out why this is necessary to make this not break
//reconnect
mGoogleApiClient.connect();
//Update button states in SettingsFragment
mSettingsFragment.updateGoogleButtonVisibility();//no longer signed in
}
});
}
else
Toast.makeText(this, "You must be signed in to revoke access!", Toast.LENGTH_SHORT).show();
}
然后当我检查 GoogleApiClient.isConnected()
的值时该方法返回 true
.显然,这应该返回 false,因为该帐户已被撤销并断开连接。有趣的是,当我尝试退出而不重新登录时,我得到一个异常提示:
01-19 23:14:37.738: E/AndroidRuntime(17503):java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
这是在注销过程中在此方法调用 ( clearDefaultAccount()
) 中抛出的,其中清除了默认帐户(文档 here ,它没有说明任何关于抛出异常的信息)也许 GoogleApiClient.isConnected()
并且这种方法以不同的方式检查?
我也知道帐户权限确实被撤销了,因为当我关闭应用程序并重新打开它时,系统再次提示我授权我的帐户。当我正常注销且未撤销访问权限时,一切正常。
可能的修复:我确实找到了一个到目前为止似乎有效的修复程序 - 即使用 mGoogleApiClient.disconnect();
手动断开与 googleApiClient 的连接在onResult()
revokeAccessAndDisconnect()
的方法| .
最佳答案
我认为您不需要使用 revokeAccessAndDisconnect()
而不是使用 disconnect()
,因为我认为它仍在连接旧数据。简单的代码是这样的:
if(mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccount();
mGoogleApiClient.disconnect();
}
关于android - GoogleApiClient.isConnected() 在调用 Plus.AccountApi.revokeAccessAndDisconnect() 后返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037656/
我有 3 个使用蓝牙连接/通信的 Activity 。 在我的第一页上,我已经连接到蓝牙设备。当我转到另一个 Activity 时,我尝试使用以下代码: BluetoothSocket btSocke
我已经创建了一个 Android 应用程序,如果我的 Android 有一个蓝牙连接到我的电脑并且我关闭了我的电脑,isConnected 仍然返回 true。有人知道这是否可以修复吗? 不知道有没有
isConnected 应该是一个变量来测试数据库连接是否成功。现在,在我的 DatabaseTest 类中,我想断言这个 isConnected 变量。 isConnected 在数据库对象中声明,
这个问题在这里已经有了答案: Java socket API: How to tell if a connection has been closed? (9 个回答) 关闭 1 年前。 我有一个使
在我的缓存 AddItem 和 GetItem 方法中,我在继续之前检查到 redis 的连接是否存在,是 ConnectionMultiplexer.IsConnected昂贵的方法调用?还是我应该
这个问题已经有答案了: How can a socket be both connected and closed? (1 个回答) Java socket API: How to tell if a
我正在使用 Java NIO 做客户端服务器 Java 程序。基本上对于服务器代码,我取自 here 。对于客户端,我取自 here 。现在看来不错。我现在想要实现的是将数据从客户端发送到服务器,服务
我正在尝试查找何时何地 CH34xAndroidDriver.isConnected() 值变为真。我试图找出并在 toast 中展示它的值(value)。谁能解释清楚。 public class U
我正在尝试在我的游戏中实现排行榜。我写了这段代码: GoogleApiClient mGoogleApiClient; mGoogleApiClient = new GoogleApiClient.B
我在我的应用程序中使用 NetInfo,以检查它是否已连接到互联网。 NetInfo.isConnected.fetch().then( (isConnected) => { console.
测试用例: 在连接开始之前它应该返回false 连接被另一端关闭返回false 连接被客户端关闭返回false 即使没有可用数据也存在连接 return true class MyConnection
我正在尝试检测蓝牙设备当前是否连接到使用 API 14 或更高版本的 Android 设备。似乎我应该能够使用 BluetoothSocket.isConnected() 方法,但无论我做了什么,到目
我正在尝试将我已经制作的 Android 应用程序复制到 iOS。我正在尝试制作一个 BLE 应用程序,我的 iOS 设备将能够看到并连接到 BLE 设备并获取 RSSI(我真的不关心消息和其他数据)
我知道这是一个愚蠢的问题,但这里是。 我有一个使用 isConnected 的旧应用程序。现在我收到警告说它已被弃用。我可以删除这行代码而不会产生任何后果,或者我该如何处理。很抱歉这么密集。 这是来自
当我从真实设备上关闭互联网连接时,它没有检测到我处于离线状态,但是当再次上线时,它会将值返回为 true。 import React from 'react'; import { SafeArea
我正在使用 Spring 3.1 开发 Hibernate4 示例。 在我的示例中,当我打印 sessionFactory.getCurrentSession().isOpen() 时在控制台上打印
自从更新了我的 SDK 管理器包后,我的 google play 服务一直无法正常工作。 这导致我运行 5.0 的三星 S5、运行 5.0.1 的 HTC One_M8 和运行 6.0(Android
我正在使用 Swift 开发一个 iOS 应用程序,它通过套接字连接到 Android 设备。我已经实现了 Starscream 并且能够连接到其他设备。我的问题是,当我在 websocketDidC
我使用 gar 在 this StackOverflow post 中的回答检查互联网连接可用性。但是,我不确定它是否正常工作。如果我关闭 WiFi 和移动数据连接并运行应用程序,NetworkInf
我正在使用 Google Play 游戏服务和 Xamarin 为 Android 开发游戏。我正在使用 Genymotion Android 模拟器进行测试。我遇到了一个似乎是 Google Pla
我是一名优秀的程序员,十分优秀!