Я использую службу доступности , чтобы проверить, какое приложение я использую , например Я использую WhatsApp и пытаюсь получить его имя пакета и сравнить его с моей базой данных, если пакет существует в моей базе данных, я закрываю приложение, чтобы я не мог использовать это приложение, я просто работаю над своей идеей. Прошло несколько дней с тех пор, как у меня возникла эта проблема, и я не могу найти решения своих проблем, может кто-нибудь мне поможет. Спасибо.
Проблемы, с которыми я столкнулся, перечислены ниже:
- Служба специальных возможностей автоматически закрывается, когда я пытаюсь закрыть свое приложение. Если я не закрываю приложение, оно работает нормально. Например, Если я закрою основное приложение, служба отключится. Есть ли способ остановить это?
- Когда я нашел имя пакета в своей базе данных, я просто выводил пользователя на главный экран «Домашняя страница». Это не лучший способ сделать это, может кто-нибудь мне с этим поможет. Мне нужно правильно заблокировать это приложение.
- Есть ли способ закрыть приложение, которое я пытаюсь заблокировать из недавних приложений?
Мой код указан ниже:
Доступность класса обслуживания
override fun onServiceConnected() {
super.onServiceConnected()
val info = serviceInfo
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED
info.flags = AccessibilityServiceInfo.DEFAULT
info.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
info.flags = AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS
info.flags = AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY
info.flags = AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK
info.notificationTimeout = 100
info.packageNames = null
serviceInfo = info
}
override fun onAccessibilityEvent(event: AccessibilityEvent) {
if(AccessibilityEvent.eventTypeToString(event.eventType).contains("WINDOW")){
val nodeInfo = event.source
dfs(nodeInfo)
}
if (event.packageName != null) {
getAllBlockedApps(packageName = event.packageName.toString())
return
}
}
Код блокировки приложения
val startMain = Intent(Intent.ACTION_MAIN)
startMain.addCategory(Intent.CATEGORY_HOME)
startMain.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startMain.flags = Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
startActivity(startMain)