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