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.
- Una nueva forma de administrar los diálogos USSD en android
- USSD respuestas de lectura
- ¿Cómo enviar un código USSD que contiene punto flotante decimal (.)?
- ¿Cómo interactuar con el menú USSD?
- Cómo obtener respuesta del código USSD de Android?
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>
- El servicio USSD no funciona
- Android studio Acción llamada para ejecutar códigos USSD
- ¿Cómo leer los mensajes de USSD en android?
- Implementación de funciones USSD. Vincular un servicio a PhoneUtils sin reiniciar el teléfono en cada actualización
- ¿Prevenir el diálogo de USSD y leer la respuesta de USSD?
- Cómo leer / interceptar mensaje USSD que viene en el teléfono Android
- ¿Es posible leer el historial de costos de llamadas desde el diálogo planteado después de finalizar la llamada de prepago?
- Utilizar IExtendedNetworkService para obtener respuesta de USSD en Android
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();
- LogCat no funciona después de la actualización a Android N
- Envíe archivos grandes (de vídeo) desde Android a PHP Server