Конечно, приложение может получить доступ к 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
, передав контекст.