Доступность без нажатия на «Принудительно остановить» вообщеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Доступность без нажатия на «Принудительно остановить» вообще

Сообщение Anonymous »

Прежде чем этот вопрос будет проголосован за закрытие, позвольте мне сказать, что я потратил более 3-4 дней на его изучение и медленно продвигался вперед и добился прогресса, прочесав вопросы Stackoverflow и всю сеть, включая даже ответы ИИ. Сейчас я могу проверить, что функции onAccessibilityEvent и onServiceConnected срабатывают, но ничего ожидаемого не происходит.
Вот мой AndroidManifest.XML Вот мой файл accessibility_service_config.XML Вот мой MyAccessibilityService.kt

Код: Выделить всё

package com.example.DDDsms

import android.accessibilityservice.AccessibilityService
import android.accessibilityservice.AccessibilityServiceInfo
import android.annotation.SuppressLint
import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityNodeInfo

@SuppressLint("AccessibilityPolicy")
class MyAccessibilityService : AccessibilityService() {
override fun onAccessibilityEvent(event: AccessibilityEvent) {
//TYPE_WINDOW_STATE_CHANGED == 32
if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event
.eventType
) {
val nodeInfo = event.source ?: return
var list = nodeInfo.findAccessibilityNodeInfosByText("Force stop")
//var list = nodeInfo.findAccessibilityNodeInfosByViewId("com.android.settings:id/force_stop_button")
//We can find button using button name or button id
for (node in list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK)
}
//list = nodeInfo
//    .findAccessibilityNodeInfosByViewId("android:id/button1")
list = nodeInfo.findAccessibilityNodeInfosByText("OK");
for (node in list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK)
}
}
}

override fun onInterrupt() {
// TODO Auto-generated method stub
}

// Override onServiceConnected to configure service if needed
override fun onServiceConnected() {
super.onServiceConnected()
// Configuration can be done here or in XML metadata
val info = AccessibilityServiceInfo()
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
info.notificationTimeout = 100
info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK
setServiceInfo(info)
}
}
Вот как я могу запустить службу специальных возможностей, открыв информацию о приложении INTENT.
...

Код: Выделить всё

checkAndEnableAccessibilityService()

val QuitBtn: Button = findViewById(R.id.quitBtn)
QuitBtn.bringToFront()
QuitBtn.setOnClickListener {

if (!Settings.canDrawOverlays(this)) {
val intent = Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:DDDsms")
)
startActivityForResult(intent, 0)
}

val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", packageName, null)
intent.data = uri
startActivity(intent)
}

...

private fun checkAndEnableAccessibilityService() {
if (!isAccessibilityServiceEnabled()) {
val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
startActivity(intent)
}
}

private fun isAccessibilityServiceEnabled(): Boolean {
return Settings.Secure.getString(contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)
?.contains("${packageName}/${MyAccessibilityService::class.java.canonicalName}") == true
}
Все работает как положено, за исключением того, что кнопка «Стоп» не нажата. Фактически, onAccessibilityEvent срабатывает, но не выходит за пределы этой строки: val nodeInfo = event.source ?: return По сути, я хочу, чтобы мое приложение автоматически нажимало кнопку «Принудительно остановить», когда я нажимаю кнопку «Выход» в своем приложении, даже если AppInfo Intent отображает всплывающее окно. Я что-то упустил?

Подробнее здесь: https://stackoverflow.com/questions/798 ... top-at-all
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»