2015-01-05 8 views
1

я получил этот журнал с помощью Crashlytics:Требуется ли Crashlytics ACCESS_NETWORK_STATE?

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.

+0

Вы упомянули, что получили это через журнал crashlytics, так что это было не с вашего собственного устройства? Похоже, что он попал в webkit, и класс TextSelectWindow попытался получить доступ к сетевому состоянию, проверив подключение. Я спрашиваю, был ли это ваш телефон, потому что я не вижу TextSelectWindow в веб-кадре в любом месте. Может быть, кто-то работает с модифицированной версией Android на корневом устройстве? https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/android/webkit – DejanRistic

+0

@DejanRistic Это правильно, а не мое устройство. – 0101100101

ответ

2

Crashlytics требуется только разрешения INTERNET. Для подключения ConnectivityManager требуется разрешение ACCESS_NETWORK_STATE

+0

Я так и думал, но что может использовать 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% отключен. – 0101100101

+0

Я считаю, что методы getActiveNetworkInfo ConnectivityManger и isNetworkAvailable требуют наличия разрешений. Я видел, как те были вызваны в ваш журнал сбоев. – joelreeves

+0

И Android может назвать это для удовольствия из любого приложения? Я никогда не делаю ничего сетевого, и я не использую для этого никакой библиотеки. Единственными библиотеками, которые я использую, являются Crashlytics и Android-анимация Daimajia. – 0101100101