gpt4 book ai didi

android - 如何在 android 中以编程方式与 USSD 对话框交互

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:00 26 4
gpt4 key购买 nike

我想使用 USSD 对话框,它在调用任何 USSD 代码 之后出现,例如 *123#,它要求用户输入要执行的选项号码具体任务取决于 SIM 卡供应商。我需要与该对话框交互以在以编程方式提供给它的文本框中提供输入。

但是,在调用任何 USSD 代码后,我能够使用 AccessibilityService 读取警报对话框中出现的 USSD 响应,并且我在 中显示了响应code>Toast 如下代码所示。我还没有找到任何与 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);
}
}

这是 list 中的服务声明:

<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>

最佳答案

为了与 USSD 对话框交互,我使用了以下代码。

我在点击事件中使用了以下代码:

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

我在 EditText 中为 setText 使用了以下代码。这是当前焦点所在的 setText

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();

关于android - 如何在 android 中以编程方式与 USSD 对话框交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com