Obtener las apps ejecutables en Android Kotlin


Cómo obtener las aplicaciones ejecutables por el usuario en el dispositivo Android usando Kotlin.

val mainIntent = Intent(Intent.ACTION_MAIN, null)
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
val pkgAppsList: MutableList<ResolveInfo>? = packageManager?.queryIntentActivities(mainIntent, 0)
Log.d(TAG, "Launcher packages:" + pkgAppsList?.size)

Cómo comprobar que una app se puede ejecutar por el usuario

No todos los paquetes existentes del sistema Android el usuario tiene la posibilidad de hacerlos correr por su cuenta, con la siguiente función isPackageLaunchByUser se puede comprobar si es ejecutable por el usuario

fun isPackageLaunchByUser(packageName: String?): Boolean {
    if (packageName == null) return false
    val mainIntent = Intent(Intent.ACTION_MAIN, null)
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
    val pkgAppsList: MutableList<ResolveInfo>? = packageManager?.queryIntentActivities(mainIntent, 0)
    pkgAppsList?.let { it ->
        it.forEach {
            if (it.activityInfo.packageName == packageName) return true
        }
    }
    return false
}

Su uso

No tiene demasiado secreto solo le debemos pasar el nombre del paquete y devovlera cierto o falso si es ejecutable

if (isPackageLaunchByUser("el.nombre.paquete") {
    //El paquete es ejecutable por el usuario
} else {
   //Solo el sistema puede ejecutar el paquete
}

Enlaces

Documentación oficial de ResolveInfo

Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: