引发Google Awareness API SecurityException

时间:2016-09-08 12:11:04

标签: android google-awareness

我正在使用DetectedActivityFence中的Google Awareness API。它在我自己的设备上工作正常,但我在Crashlytics收到了几起关于 SecurityException 的崩溃。

Fatal Exception: java.lang.SecurityException: Invalid API Key for package = [package_name] .Status code received = -1
   at android.os.Parcel.readException(Parcel.java:1540)
   at android.os.Parcel.readException(Parcel.java:1493)
   at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source)
   at com.google.android.gms.common.internal.zzd.zzqz(Unknown Source)
   at com.google.android.gms.internal.zzpw$zzc.zzapl(Unknown Source)
   at com.google.android.gms.internal.zzpw$zzf.run(Unknown Source)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
   at com.google.android.gms.internal.zzrn.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:818)

这种情况在Android版本之间没有任何相关性,即它影响来自不同制造商和不同Android版本(5.x-6.x)的设备。这些设备没有root,看起来像在Stock ROM上工作。 10%的用户会出现此问题。

我确定我正在使用正确的API密钥,否则我可以在自己的设备上看到崩溃,是吗?

是否有人面临同样的问题?

4 个答案:

答案 0 :(得分:5)

有一个错误错误地将网络操作中的某些错误错误地认证为应用,因为表明API密钥未正确设置,即使实际错误是其他错误。这已在内部修复,并将在下一个Google Play服务版本中推出。

目前,最好的解决方法是在调用GoogleApiClient.connect()的线程上添加UncaughtExceptionHandler。如果你在主线程上调用GoogleApiClient.connect(),那么你可以通过Looper.myLooper()。getThread()来获取Thread实例。

答案 1 :(得分:0)

来自:https://code.google.com/p/android/issues/detail?id=223751#c2

  

我们的支票中有一个错误,有时会抛出此错误   SecurityException当存在网络错误进行身份验证时。该   修复程序将在下一版Google Play服务中推出。

     

目前,最好的解决方法是建立一个   您调用的线程上的UncaughtExceptionHandler   GoogleApiClient.connect()。对于大多数人来说,这将是主要的   线程,你可以通过Looper.myLooper()。getThread()。

获得

但你也会注意到回复表明这不是一个可靠的解决方法。

您可能还会注意到该帖子的OP引用了这个SO帖子,但是接受的答案并没有引用该线程,即使它们是逐字复制的。非常糟糕的形式!

答案 2 :(得分:0)

我遇到了这个问题,因为我遇到了同样的错误,我认为可能是Awareness API密钥未同步到Google Developer Console,经过大量查看并得到相同的错误后,我又回到了Awareness谷歌开发者控制台上的API,并实现我的Awareness API没有启用,即使我有包装和有一个有效的API密钥。还要确保在Manifest中设置了API密钥。希望这有助于某人。

答案 3 :(得分:0)

我挣扎了近一天,又找到了另一个答案。虽然当时接受的答案是正确的。

唯一帮助我的是在Google Developer Console上使用调试密钥库生成API密钥以进行测试,并在投入生产时将其替换为发布密钥库。

如何生成API密钥?请查看Google的单词Here

希望将来能帮到某人。