Получить список процессов Android

Рейтинг: -1Ответов: 1Опубликовано: 15.04.2023

Такая задача. Запущенное Android-приложение должно просмотреть список запущенных на устройстве приложений, и при выявлении нежелательных (в моем случае это приложения типа AnyDesk, RustDesk и т.п.) запретить выполнение определенных функций в приложении. Как вывести список запущенных процессов?

Ответы

▲ 0Принят

Конечно, приложение может получить доступ к packageManager и осуществить проверку наличия нежелательного приложения. Для этого используется метод context.packageManager.getPackageInfo.

Но забегая наперёд подчеркну - для пользователя подобный ход мыслей разработчика может показаться невероятно наглым, и лично я стараюсь попросту избегать приложений, которые проверяют наличие на моём устройстве каких-либо программ, дабы ограничить доступ.

Вот пример реализации:

//Список запрещённых приложений
private val bannedApps = listOf(
    "com.anydesk.anydeskandroid",//AnyDesk
    "com.carriez.flutter_hbb",//RustDesk 
)

//Метод для проверки запрещённых приложений
fun checkPackages(context: Context): Boolean {
    bannedApps.forEach {
        if (isPackageInstalled(context, it)) return true
    }
    return false
}

//Метод для проверки установленности определённого приложения
private fun isPackageInstalled(context: Context, packageName: String): Boolean {
    return try {
        context.packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
        true
    } catch (exception: PackageManager.NameNotFoundException) {
        false
    }
}

Исходя из модификаторов доступа и названий методов понятно, что список нежелетаельных приложений следует сформировать самостоятельно и занести в bannedApps.

Для проверки наличия приложений требуется лишь вызвать метод checkPackages, передав контекст.