创建新的 GoogleApiClient 时的状态码 16
Posted
技术标签:
【中文标题】创建新的 GoogleApiClient 时的状态码 16【英文标题】:Status Code 16 when creating new GoogleApiClient 【发布时间】:2015-05-25 00:18:55 【问题描述】:我正在尝试创建一个基本的可穿戴应用程序,它接受来自主 android 应用程序的新位图。不幸的是,当我尝试 .build() GoogleApiClient 时,连接失败的侦听器被调用,错误代码为 16。
这是从 ConnectionFailedListener 收到的确切错误
03-21 13:36:35.903 3089-3089/com.example.android.wearable.watchface D/Watch Face Config﹕onConnectionFailed: ConnectionResultstatusCode=unknown status code 16, resolution=null
应用代码:
// create the api client to allow sending information to the wearable
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks()
@Override
public void onConnected(Bundle connectionHint)
Log.d(TAG, "onConnected: " + connectionHint);
// Now you can use the Data Layer API
@Override
public void onConnectionSuspended(int cause)
Log.d(TAG, "onConnectionSuspended: " + cause);
)
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener()
@Override
public void onConnectionFailed(ConnectionResult result)
Log.d(TAG, "onConnectionFailed: " + result);
)
// Request access only to the Wearable API
.addApi(Wearable.API)
.build();
在可穿戴应用程序中,我创建了一个 DataListenerService,但目前这并不重要,因为 API 构建不正确。
感谢任何帮助或cmets!
更新 - 我将模拟器设备目标从 Google APIs 更改为 Android 5.0.1,错误更改为:
03-21 14:18:24.620 3025-3025/com.example.android.wearable.watchface D/Watch Face Config﹕onConnectionFailed: ConnectionResultstatusCode=SERVICE_MISSING, resolution=null
更新 2 - 找到 this 文章并按照说明进行操作。然后我的应用程序无法编译。之后,我根据标记的答案建议去了 SDK 管理器并检查了 Google Play 服务(它们没有安装)。现在应用程序已构建,但仍然出现上述 SERVICE_MISSING 错误。
【问题讨论】:
您的手机上安装了 Android Wear 吗? 我正在使用模拟器 【参考方案1】:您需要在设备上安装 Google Play 服务和 Android Wear app 才能使用 Wearable API。默认情况下,模拟器没有它,所以要么手动安装它,要么使用已经有它的设备。
如果您使用 Genymotion,只需 download Google Play Services 并在模拟器上拖放即可。然后使用您的 Google 帐户登录并使用 Play 商店下载 Android Wear 应用。
更多信息here 和here。
如果您不使用 Genymotion,则应立即开始使用,因为它比标准 AVD 快得多。
请记住,虽然这将使您的GoogleApiClient
成功连接,但如果您想真正使用可穿戴设备,您仍然需要在模拟器和可穿戴设备(或可穿戴模拟器)之间建立连接API。所以请参考其他关于如何创建或模拟蓝牙连接的问题,for example this one。
编辑:如今,官方的 Android 模拟器速度更快,并且开箱即用地安装了 Google Play 服务。
【讨论】:
您对如何在模拟器中安装 Wear 应用有任何指导吗?【参考方案2】:查看这个 SO 问题:
Android Wear - Unexpected error code 16
我遇到了类似的问题。错误代码告诉您未安装 Android Wear 应用程序。在您的 onConnectionFailedListener 中,您需要添加如下内容:
// Connection failed listener method for a client that only
// requests access to the Wearable API
@Override
public void onConnectionFailed(ConnectionResult result)
if (result.getErrorCode() == ConnectionResult.API_UNAVAILABLE)
// The Android Wear app is not installed
...
从这里开始:
https://developer.android.com/google/auth/api-client.html#Starting
“访问可穿戴 API”
【讨论】:
以上是关于创建新的 GoogleApiClient 时的状态码 16的主要内容,如果未能解决你的问题,请参考以下文章
Android - GoogleApiClient 实例在 IntentService 中的 .connect() 和 onConnected() 之间丢失