Android - Взаимодействие с USSD-диалогом программно
Есть ли способ для Android-приложения программно взаимодействовать с USSD-диалогом? Приложение работает на рутированном телефоне и не будет опубликовано в магазине Google (только для внутреннего использования).
Мне известно, что мы можем прочитать ответ на USSD-диалог (используя взлом доступа). Но здесь я пытаюсь открыть диалог USSD и взаимодействовать с ним так же, как обычный пользователь взаимодействует с ним с помощью программной клавиатуры. Благодарю.
3 ответа
В onAccessibilityEvent вам нужно будет сначала захватить поле ввода, затем заполнить его своим текстом, а затем нажать "Отправить" (как объяснено @lewil ngah)
AccessibilityNodeInfo source = event.getSource();
if (source != null) {
//capture the EditText simply by using FOCUS_INPUT (since the EditText has the focus), you can probably find it with the viewId input_field
AccessibilityNodeInfo inputNode = source.findFocus(AccessibilityNodeInfo.FOCUS_INPUT);
if (inputNode != null) {//prepare you text then fill it using ACTION_SET_TEXT
Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,"text to enter");
inputNode.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
}
//"Click" the Send button
List<AccessibilityNodeInfo> list = source.findAccessibilityNodeInfosByText("Send");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
Танк Пражест Тау. У меня работает нормально.
в функции onAccessibilityEvent, реализации AccessibilityService
AccessibilityNodeInfo nodeInfo = event.getSource();
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("Send");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
Используя сервис специальных возможностей, мы можем прочитать ответ USSD и взаимодействовать с диалоговым окном ussd. То есть мы можем передать значение в диалоговое окно USSD. У меня работает нормально.