Cómo interactuar con el cuadro de diálogo USSD mediante programación en android

Quiero usar el diálogo de USSD que viene después de marcar cualquier código de USSD decir * 123 # que pide que el usuario entre el número de la opción para realizar la tarea específica (s) dependiendo de vendedores de la tarjeta del sim. Necesito interactuar con ese diálogo para proporcionar la entrada en el cuadro de texto dado en él programmatically.

Sin embargo, puedo leer la respuesta de USSD que viene en Alert Dialog después de marcar cualquier código USSD, usando AccessibilityService y estoy mostrando la respuesta en un Toast como se muestra en el código de abajo. Todavía no he encontrado ninguna solución para interactuar con el diálogo de USSD.

 public class UssdService extends AccessibilityService{ public static String TAG = "USSD"; @Override public void onAccessibilityEvent(AccessibilityEvent event) { Log.d(TAG, "onAccessibilityEvent"); String text = event.getText().toString(); if (event.getClassName().equals("android.app.AlertDialog")) { Log.d(TAG, text); Toast.makeText(this, text, Toast.LENGTH_LONG).show(); } } @Override public void onInterrupt() { } @Override protected void onServiceConnected() { super.onServiceConnected(); Log.d(TAG, "onServiceConnected"); AccessibilityServiceInfo info = new AccessibilityServiceInfo(); info.flags = AccessibilityServiceInfo.DEFAULT; info.packageNames = new String[]{"com.android.phone"}; info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED; info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; setServiceInfo(info); } } 

Aquí está la declaración de servicio en Manifest:

 <service android:name=".UssdService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/config_service" /> </service> 

Para interactuar con el cuadro de diálogo USSD, utilicé debajo del código.

Utilicé el siguiente código para el evento de clic:

 List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("Send"); for (AccessibilityNodeInfo node : list) { node.performAction(AccessibilityNodeInfo.ACTION_CLICK); } 

Utilicé el siguiente código para setText en EditText . Este es setText donde está el foco actual.

 AccessibilityNodeInfo nodeInput = nodeInfo.findFocus(AccessibilityNodeInfo.FOCUS_INPUT); Bundle bundle = new Bundle(); bundle.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,pMPIN); nodeInput.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT,bundle); nodeInput.refresh(); 
  • ¿Cómo es posible hacer las peticiones de USSD en Android?
  • ¿Cómo ejecutar comandos USSD en android?
  • Hacer llamada USSD en android
  • ¿Cómo iniciar android.intent.action.CALL en servicio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.