Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

640
Vistas
Considere agregar una declaración de consultas a su manifiesto cuando llame a este método cuando use intent.resolveActivity en Android 11

Tengo una función de extensión para abrir una intención para mis actividades:

 fun Activity.openIntent(action: String?, type: String?, uri: Uri?) { Intent() .apply { action?.let { this.action = it } uri?.let { this.data = it } type?.let { this.type = it } } .also { intent -> packageManager?.let { if (intent.resolveActivity(it) != null) startActivity(intent) else showToast(R.string.application_not_found) } } }

Mi targetSdkVersion es 30 . Me da una advertencia en intent.resolveActivity(it) :

Considere agregar una declaración de consultas a su manifiesto cuando llame a este método.

Entonces, ¿qué debo hacer para resolver esta advertencia?

over 4 years ago · Hanz Gallego
3 Respuestas
Responde la pregunta

0

La solución más simple es deshacerse de resolveActivity() . Reemplazar:

 packageManager?.let { if (intent.resolveActivity(it) != null) startActivity(intent) else showToast(R.string.application_not_found) }

con:

 try { startActivity(intent) } catch (ex: ActivityNotFoundException) { showToast(R.string.application_not_found) }

Esto le da el mismo resultado con un rendimiento un poco mejor y eliminará la advertencia.

Otra opción sería agregar el permiso QUERY_ALL_PACKAGES . Esto puede hacer que te excluyan de Play Store.

De lo contrario, deberá:

  • Cree una lista de todas las posibles openIntent() que su aplicación puede realizar

  • Agregue un elemento <queries> a su manifiesto que enumere todas las posibles estructuras de Intent que desea poder usar con resolveActivity()

  • Repita este proceso periódicamente, en caso de que agregue nuevos escenarios para openIntent()

over 4 years ago · Hanz Gallego Denunciar

0

Entonces, al iniciar Android 11 (es decir, si su aplicación apunta a Android 11), no todas las aplicaciones serán visibles para su aplicación. Algunas aplicaciones son visibles de forma predeterminada, pero para acceder a otras aplicaciones a través de su aplicación, deberá declarar queries en su manifiesto; de lo contrario, su aplicación no podrá acceder a ellas. Puedes leer sobre eso aquí .

Entonces, si su aplicación tiene como objetivo Android 11 y es para acceder a una aplicación que puede no estar visible de forma predeterminada, querrá agregar queries para ellos en el archivo de manifiesto.

En su caso, esta advertencia no es aplicable, ya que creo que está utilizando intentos implícitos para abrir otras aplicaciones. Mediante intentos implícitos, se puede acceder a otras aplicaciones independientemente de la visibilidad de la aplicación. Si su aplicación tiene como objetivo Android 10 o inferior, puede suprimir la advertencia ya que todas las aplicaciones están visibles de forma predeterminada.

Para suprimir la advertencia de pelusa, puede:

  1. Agregue la anotación de supresión, así:
 @SuppressLint("QueryPermissionsNeeded") fun Activity.openIntent(action: String?, type: String?, uri: Uri?): Activity {
  1. Agregue lo siguiente a su bloque de Android en el archivo gradle de compilación del módulo de su aplicación:
 lintOptions { ignore "QueryPermissionsNeeded" }
over 4 years ago · Hanz Gallego Denunciar

0

Reemplazar

 if (intent.resolveActivity(it) != null)

con

 if (it.resolveActivity(intent, 0) != null)

y la advertencia se habrá ido.

over 4 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda