这绝对是某种错误,但我不知道在哪里提交此文件,我想知道其他开发人员是否有解决方法。
我制作了这个天气应用程序,我爸爸和妹妹都下载了它。它似乎工作了一段时间。然后我父亲买了一部新手机(来自Republic Wireless的Moto E)。奇怪的是,它在应用程序启动时出错。 (16个来自Google Play服务)。这意味着API不受支持。
我没有尝试访问过多的API。
gapi = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
然后上周它停止了对我姐姐的电话工作,给出了同样的错误。这没什么意义。我们有相同的手机和相同的运营商。为什么它没有工作?我确定她有最新版本的应用程序。基本上一切都是一样的。我在网上发帖其他人得到了这个错误。我没有。
让我说清楚。我大约一个月前更新了应用程序。我没有发布任何新代码。与此同时,应用程序停止在各种设备上工作,我无法弄清楚原因。
在尝试了几乎所有东西来重现这个bug之后,我终于弄明白了。我卸载了我的Android Wear配套应用程序,这是其他人从未有过的。这样做,我收到了这个错误。 Google Play服务必须创建一些不会优雅失败的错误。
作为一种解决方法,我将尝试这样做:
if(appInstalledOrNot("com.google.android.wearable.app")) {
gapi = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
} else {
gapi = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
方法检查包是否已安装。
这不是一个很好的黑客,而是一个由回归引起的黑客攻击。这是解决这个问题的理想方法吗?
答案 0 :(得分:0)
根据Tips for Error Handling with Android Wear APIs blog post:
connect()方法有两种方法可以使用Google Play服务返回ConnectionResult.API_UNAVAILABLE以获取可穿戴支持:
- 在运行Android 4.2(API级别17)或更早版本
的任何设备上请求Wearable.API时- 在没有Android Wear配套应用程序或设备可用时请求Wearable.API
因此这是预期的行为。另外根据博文:
开发人员的最佳做法是实施两个单独的GoogleApiClient连接:
- Android Wear支持的一个连接,
- 您需要的所有其他API的单独连接
这将确保您的应用的功能将保留给所有用户,无论他们的设备上是否有可穿戴支持,以及旧的旧设备。
这意味着您可以将可穿戴式呼叫定向到GoogleApiClient
仅与Wearable.API
相关联(如果未连接则忽略),并将所有其他呼叫定向到其他GoogleApiClient
(不依赖于Android Wear。