Resolver la intención de URL a veces es nulo, lanza NullPointerException

Tengo una aplicación de Android que hace esto:

PackageManager pm = getApplicationContext().getPackageManager(); Intent browserIntent = new Intent(); browserIntent.setAction(Intent.ACTION_VIEW); browserIntent.addCategory(Intent.CATEGORY_BROWSABLE); browserIntent.setData(Uri.parse("http://www.google.com")); ResolveInfo resolveInfo = pm.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY); try { String browserType = nutent.activityInfo.packageName; } catch (NullPointerException npe) { npe.printStackTrace(); } 

He probado esto en 4 diversos auriculares y muchas configuraciones diferentes del emulador. Todos ellos funcionan bien. Pero estoy recibiendo informes de fallos de aplicaciones desplegadas en la naturaleza lanzando un NPE ya que resolverInfo es a veces nulo.

La solución inmediata es coger el NPE y tratar con él antes de que se bloquea mi aplicación (como se ha hecho anteriormente). Pero he intentado durante días reproducir esto yo mismo y no puedo. En un emulador con un solo navegador predeterminado instalado, se resuelve a com.android.browser.BrowserActivity:

 ResolveInfo{411ef228 com.android.browser.BrowserActivity p=0 o=0 m=0x208000} 

Del mismo modo, en un teléfono con varios navegadores instalados, esto se resuelve algo diferente … a com.android.internal.app.ResolverActivity:

 ResolveInfo{415c13b8 com.android.internal.app.ResolverActivity p=0 o=0 m=0x0} 

El resolveActivity () hace aquí el estado:

Devuelve un ResolveInfo que contiene la intención de actividad final que se determinó que es la mejor acción. Devuelve null si no se encontró ninguna actividad coincidente. Si se encuentran varias actividades coincidentes y no hay un conjunto predeterminado, devuelve un ResolveInfo que contiene algo más, como el resolvedor de actividad.

Así que he cubierto el primer escenario, el de una actividad intención determinada a ser la mejor acción. También el último escenario, el de múltiples actividades de coincidencia sin acción por defecto, devolver el ResolverActivity.

Realmente me gustaría reproducir el escenario de resolveActivity () dándome un nulo al solicitar la actividad de una URL. ¿Alguien tiene alguna idea de cómo esto se puede hacer sin, por ejemplo, el enraizamiento del dispositivo?

One Solution collect form web for “Resolver la intención de URL a veces es nulo, lanza NullPointerException”

Realmente me gustaría reproducir el escenario de resolveActivity () dándome un nulo al solicitar la actividad de una URL. ¿Alguien tiene alguna idea de cómo esto se puede hacer sin, por ejemplo, el enraizamiento del dispositivo?

  1. Vaya a Ajustes> Aplicaciones> TODOS> Localice el navegador (s) (en Nexus 4 con ROM de acciones que sería Chrome)> Desactivar
  2. Comienza a atrapar NPEs 🙂
  • Galaxy Tab 10.1 resolución de pantalla utilizable (- la barra de menú)
  • Evite varios juegos de dibujos (hdpi / mdpi / ldpi)
  • Cómo escalar un juego correctamente en Android
  • Javascript para detectar el ancho de la pantalla del navegador móvil?
  • Android: ¿Cómo obtener el tamaño de pantalla real del dispositivo?
  • Múltiples imágenes de fondo extraíbles para adaptarse a las resoluciones de pantalla
  • Resolución de pantalla para Android y iPhone diseño en Photoshop
  • ¿Por qué un dispositivo con mayor densidad de píxeles tiene menos propiedades de pantalla? (Eclipse AVD)
  • Android: ¿Por qué crear imágenes específicas para ldpi, mdpi y hdpi?
  • Android xdpi carpetas, ¿qué tamaño de mi imagen?
  • Android: Obtener la resolución de pantalla / píxeles como valores enteros
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.