Accesibilidad de Android com.android.settings: id / left_button sobre la fuerza no funciona

Trato de usar la accesibilidad, tengo habilitar la accesibilidad.

Pero quiero usar la accesibilidad para obligar a detener la aplicación,

Yo trato de usar

event.getSource().findAccessibilityNodeInfosByViewId("com.android.settings:id/left_button") 

En el teléfono celular sony, es el trabajo correcto. Pero en el teléfono celular HTC, no es trabajo.

¿Cómo puedo obtener el ID de botón de parada de fuerza en cada teléfono celular? U otros métodos?

Mi código de abajo, muchas gracias

  private void forceStopApplication(AccessibilityEvent event) { if (event.getSource() != null) { if (event.getPackageName().equals("com.android.settings")) { List<AccessibilityNodeInfo> stop_nodes = event.getSource().findAccessibilityNodeInfosByViewId("com.android.settings:id/left_button"); if (stop_nodes!=null && !stop_nodes.isEmpty()) { AccessibilityNodeInfo node; for(int i=0; i<stop_nodes.size(); i++){ node = stop_nodes.get(i); if (node.getClassName().equals("android.widget.Button")) { if(node.isEnabled()){ node.performAction(AccessibilityNodeInfo.ACTION_CLICK); } else { performGlobalAction(GLOBAL_ACTION_BACK); } node.recycle(); } } } List<AccessibilityNodeInfo> ok_nodes = null; if(event.getText() != null && event.getText().size() == 4) { ok_nodes = event.getSource().findAccessibilityNodeInfosByText(event.getText().get(3).toString()); } if (ok_nodes!=null && !ok_nodes.isEmpty()) { AccessibilityNodeInfo node; for(int i=0; i<ok_nodes.size(); i++){ node = ok_nodes.get(i); if (node.getClassName().equals("android.widget.Button")) { node.performAction(AccessibilityNodeInfo.ACTION_CLICK); Log.d("action", "click ok"); } node.recycle(); } } } } } 

2 Solutions collect form web for “Accesibilidad de Android com.android.settings: id / left_button sobre la fuerza no funciona”

Puede crear una lista de todos los AccessibilityNodeInfo y encontrar el nodo que tiene 'Force Stop' como es el texto usando el método node.getText() .

 @Override public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent){ int eventType = accessibilityEvent.getEventType(); switch (eventType) { case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: AccessibilityNodeInfo rootNode = getRootInActiveWindow(); ArrayList<AccessibilityNodeInfo> buttonNodes = new ArrayList<AccessibilityNodeInfo>(); findChildViews(rootNode); for(AccessibilityNodeInfo mNode : buttonNodes){ if(mNode.getText()==null){ return; } if(mNode.getText().toString().contentEquals("FORCE STOP"){ mNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); } } break; } } 

Método findChildViews() :

 private void findChildViews(AccessibilityNodeInfo parentView) { if (parentView == null || parentView.getClassName() == null || ) { return; } if (childCount == 0 && (parentView.getClassName().toString().contentEquals("android.widget.Button"))) { buttonNodes.add(parentView); } else { for (int i = 0; i < childCount; i++) { findChildViews(parentView.getChild(i)); } } } } 

Usted tiene que agregar un cheque para el nombre de la actividad primero; O el servicio continuará comprobando cada actividad que abra.

En el dispositivo HTC, el botón de cierre de la fuerza tiene ID: force_stop_button , not left_button

  • Cómo hacer anotaciones como destacar, tachar, subrayar, dibujar, añadir texto, etc en android para un visor de pdf?
  • ¿Qué significa DetailedState.VERIFYING_POOR_LINK?
  • Cargando muchas imágenes del servidor en Android
  • Insertar} para completar el error de ClassBody incluso con paréntesis coincidentes
  • Android - Barcode Scanning, Opciones? Zxing?
  • RxJava: "java.lang.IllegalStateException: Sólo un suscriptor permitido!"
  • Mono.AndroidTools.InstallFailedException: Fallo
  • Una sencilla implementación MIDI gratuita en Java además de javax.sound.midi: ¿Hay alguna?
  • ScrollView con evento OnTouch
  • Alinear el centro de texto con android
  • ¿Cómo agregar timePicker usando fragmento?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.