Нужен ли Crashlytics ACCESS_NETWORK_STATE?

Я получил этот журнал через Crashlytics:

java.lang.SecurityException: ConnectivityService: Neither user 10099 nor current process has android.permission.ACCESS_NETWORK_STATE.
   at android.os.Parcel.readException(Parcel.java:1428)
   at android.os.Parcel.readException(Parcel.java:1382)
   at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:737)
   at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:566)
   at android.webkit.TextSelectWindow.isNetworkAvailable(TextSelectWindow.java:903)
   at android.webkit.TextSelectWindow.dictSelection(TextSelectWindow.java:475)
   at android.webkit.TextSelectWindow.onClick(TextSelectWindow.java:365)
   at android.view.View.performClick(View.java:4220)
   at android.view.View$PerformClick.run(View.java:17510)
   at android.os.Handler.handleCallback(Handler.java:800)
   at android.os.Handler.dispatchMessage(Handler.java:100)
   at android.os.Looper.loop(Looper.java:194)
   at android.app.ActivityThread.main(ActivityThread.java:5455)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:525)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:966)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:733)
   at dalvik.system.NativeStart.main(NativeStart.java)

Видимо, что-то требует разрешения ACCESS_NETWORK_STATE. Единственное разрешение, которое в настоящее время есть у приложения, — это INTERNET, которое мне нужно только для получения журналов сбоев через Crashlytics. Само приложение никогда не нуждается в подключении к Интернету и отлично работает без каких-либо разрешений. Значит ли это, что для правильной работы Crashlytics требуется ACCESS_NETWORK_STATE? Странно то, что это первый и единственный сбой после целого месяца без сбоев, и Crashlytics всегда работал без разрешения.

Приложение нацелено на SDK 21 и использует crashlytics:1.1.13 и crashlytics-gradle:1.14.7.


person 0101100101    schedule 05.01.2015    source источник
comment
Вы упомянули, что получили это через журнал краха, так что это было не с вашего собственного устройства? Похоже, он зашел в webkit, и класс TextSelectWindow попытался получить доступ к состоянию сети, проверив подключение. Я спрашиваю, был ли это ваш телефон, потому что я нигде не вижу TextSelectWindow в webkit. Может быть, кто-то использует модифицированную версию Android на рутированном устройстве? android.googlesource.com/platform/ рамки/base.git/+/мастер/   -  person DejanRistic    schedule 05.01.2015
comment
@DejanRistic Правильно, не мое устройство.   -  person 0101100101    schedule 06.01.2015


Ответы (1)


Crashlytics нужны только разрешения INTERNET. Для ConnectivityManager требуется разрешение ACCESS_NETWORK_STATE.

person joelreeves    schedule 06.01.2015
comment
Я так и думал, но что может использовать ConnectivityManager, когда я ничего не получаю через Интернет? Я использую WebViews только для отображения локального HTML-контента, например: webView.getSettings().setDefaultTextEncodingName(HTTP.UTF_8); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.loadUrl(file:///android_asset/ + name + .html); Несмотря на то, что этот единственный сбой очень незначителен, я все же думаю, что это действительно странно, что приложение Android может аварийно завершить работу из-за отсутствия ACCESS_NETWORK_STATE, когда оно равно 100 % не в сети. - person 0101100101; 06.01.2015
comment
Я считаю, что методы getActiveNetworkInfo и isNetworkAvailable ConnectivityManger требуют этих разрешений. Я видел тех, кому звонили, в вашем краш-логе. - person joelreeves; 06.01.2015
comment
И Android может вызвать их для развлечения из любого приложения? Я никогда не делаю ничего сетевого и не использую для этого какую-либо библиотеку. Единственные библиотеки, которые я использую, — это Crashlytics и Android View Animations от Daimajia. - person 0101100101; 07.01.2015
comment
@0101100101: Эта ошибка не имеет ничего общего с Crashlytics. Вы узнаете об ошибке через Crashlytics. Я использую ACRA и другую серверную службу, и у меня было несколько сбоев с той же трассировкой стека, что и у вас. В моем случае компания Huwaei изменила WebView таким образом, что требуется ACCESS_NETWORK_STATE, по крайней мере, на одном устройстве. - person CommonsWare; 27.05.2015