Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Necesita V2 Maps Library el permiso ACCESS_NETWORK_STATE?

Estoy usando la Biblioteca de Google Maps para Android V2 (Servicios de Google Play) en mi aplicación publicada. He estado viendo excepciones esporádicas que aparecen en Google Play y que parecen sugerir que el fragmento de mapa de soporte ocasionalmente intenta comprobar el estado de la red. Sin embargo, la documentación de la biblioteca no menciona que se requiere este permiso. No compruebo el estado de la red directamente en mi aplicación, así que no declaré este permiso. Como resultado, a veces se produce una SecurityException al inflar el fragmento de mapa de soporte:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.foo/com.foo.ui.TransactionDetailActivity}: android.view.InflateException: Binary XML file line #327: Error inflating class fragment at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5039) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #327: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.inflate(LayoutInflater.java:459) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java:352) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(SourceFile:119) at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SourceFile:262) at com.foo.ui.TransactionDetailActivity.onCreate(SourceFile:129) at android.app.Activity.performCreate(Activity.java:5104) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) ... 11 more Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10106 nor current process has android.permission.ACCESS_NETWORK_STATE. at android.os.Parcel.readException(Parcel.java:1425) at android.os.Parcel.readException(Parcel.java:1379) at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:623) at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:425) at maps.bm.ee(Unknown Source) at maps.bm.ea(Unknown Source) at maps.z.ag.a(Unknown Source) at maps.z.ag.a(Unknown Source) at maps.z.ag.a(Unknown Source) at maps.z.bw.a(Unknown Source) at maps.zronCreateView(Unknown Source) at com.google.android.gms.maps.internal.IMapFragmentDelegate$Stub.onTransact(IMapFragmentDelegate.java:107) at android.os.Binder.transact(Binder.java:310) at com.google.android.gms.maps.ala(Unknown Source) at com.google.android.gms.maps.ma(Unknown Source) at com.google.android.gms.internal.ap.a(Unknown Source) at com.google.android.gms.internal.al.a(Unknown Source) at com.google.android.gms.internal.al.a(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:846) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1061) at android.support.v4.app.FragmentManagerImpl.addFragment(SourceFile:1160) at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:272) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) ... 28 more 

He declarado el permiso correspondiente en mi manifiesto y veré si eso corrige el problema. Sin embargo, es preocupante que esto sólo ocurriría en algunos dispositivos y no en otros. Por ejemplo, esto ha funcionado bien en nuestros dispositivos de prueba internos y muchos otros. ¿Alguien tiene alguna idea de este misterioso problema? ¿Podría ser causado por un error proguard?

  • Admob Memory Leak - evitando usar la actividad vacía
  • ¿Puedo subrayar texto en un diseño de Android?
  • Cómo leer el archivo de res / raw por nombre
  • RecyclerView GridLayoutManager: cómo detectar el recuento de span?
  • Comprobar si el dispositivo Android tiene botón de hardware de búsqueda
  • TextInputLayout error después de ingresar el valor en edittext
  • Edición 1: Este error se produjo al utilizar la versión 2.0.10 (541717-10) de la biblioteca de Servicios de Google Play.

  • Cómo instalar la última versión de ADT plug-in para eclipse
  • Fatal crash: Focus search devolvió una vista que no fue capaz de tomar foco
  • Número de construcción iónico equivocado en el archivo config.xml
  • ¿Dónde está debug.keystore en Mac?
  • Caché HTTP con Retrofit 2.0.x
  • ¿Cómo hacer una llamada a través de PC por el comando ADB en android?
  • 2 Solutions collect form web for “¿Necesita V2 Maps Library el permiso ACCESS_NETWORK_STATE?”

    Sí. Cualquier uso del método getActiveNetworkInfo() requerirá el permiso de acceso al estado de la red.

    La siguiente línea en su Manifiesto debe hacer el truco:

     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    Con la última versión de la biblioteca de Servicios de Google Play, la documentación se ha actualizado para indicar que se requiere este permiso.

    Las notas de la versión indican por qué se requiere este permiso:

    Mejora de la recuperación de obtener conectividad de red. Esta corrección requiere el permiso ACCESS_NETWORK_STATE.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.