2

我们的应用在华为设备(华为 P30 Pro、Android 10)上获得了 SecurityEception。我们不知道是什么原因造成的,谷歌搜索也没有结果。完整的堆栈跟踪:

java.lang.SecurityException: 
  at android.os.Parcel.createException (Parcel.java:2071)
  at android.os.Parcel.readException (Parcel.java:2039)
  at android.os.Parcel.readException (Parcel.java:1987)
  at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo (IConnectivityManager.java:2153)
  at android.net.ConnectivityManager.getActiveNetworkInfo (ConnectivityManager.java:1006)
  at com.huawei.android.totemweather.common.NetUtil.isNetworkAvaialble (NetUtil.java:107)
  at com.huawei.android.totemweather.widget.controller.AutoRefreshManager.sendRefresh (AutoRefreshManager.java:78)
  at com.huawei.android.totemweather.widget.controller.WidgetWeatherServiceAgent$WeatherDataObserver$WeatherReceiver.lambda$onReceive$0$WidgetWeatherServiceAgent$WeatherDataObserver$WeatherReceiver (WidgetWeatherServiceAgent.java:509)
  at com.huawei.android.totemweather.widget.controller.WidgetWeatherServiceAgent$WeatherDataObserver$WeatherReceiver$$Lambda$0.run (WidgetWeatherServiceAgent.java:2)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:929)
Caused by: android.os.RemoteException: 
  at android.app.ContextImpl.enforce (ContextImpl.java:2001)
  at android.app.ContextImpl.enforceCallingOrSelfPermission (ContextImpl.java:2029)
  at com.android.server.ConnectivityService.enforceAccessPermission (ConnectivityService.java:2195)
  at com.android.server.ConnectivityService.getActiveNetworkInfo (ConnectivityService.java:1507)
  at com.android.server.HwConnectivityService.getActiveNetworkInfo (HwConnectivityService.java:2559)

有谁知道可能导致这种情况的原因?似乎这可能与从华为天气小部件访问网络时引发的异常有关。

编辑:我们创建一个自定义启动器。

4

2 回答 2

0

所以我搜索了 remoteException 的含义,它似乎是在远程对象不再可用时发生的,通常意味着它崩溃了。鉴于它是他们尝试访问其信息的小部件,小部件或应用程序可能会在尝试访问不可用的信息时崩溃。正在报告的安全异常可能是由于缺少权限引起的。因此,可能缺少权限,这会阻止小部件/应用程序的信息被正确访问,从而导致崩溃并且无法按预期工作。请检查您的清单是否缺少权限,尤其是连接/互联网访问权限。

于 2020-11-30T23:27:23.690 回答
0

根据经验,我可以告诉你,华为的小部件不能很好地与第三方启动器配合使用。我自己在 Google Play 上也有一个启动器,并且大量的崩溃来自(并且仍然是)来自 Hauwei 设备上的小部件。在过去的几周里,我也发生了多次类似的崩溃,特别是来自华为 P30。问题(几乎)总是小部件内的安全异常。但是,您似乎没有可以添加到清单中来解决此问题的权限。我也没有办法捕捉这些异常。

从我从其他第三方启动器(以及我也在做的)中阅读和听到的内容是过滤掉来自华为的所有小部件,以便无法添加它们。恐怕没有其他方法可以从您这边解决这个问题。您可以查看 Lawnchair Launcher 的存储库,了解如何将华为小部件列入黑名单: https ://github.com/LawnchairLauncher/Lawnchair/blob/87c0ab17050bca7fe354bf99d41a461b04aa9958/src/com/android/launcher3/compat/ AppWidgetManagerCompat.java

但是,P30 上至少有一个来自华为的小部件不被排除在外。如果有一份来自 Hauwei 的小部件列表,那就太酷了,这样人们就可以更可靠地排除它们。

于 2021-01-16T11:11:44.530 回答