坚持开发交互式 USSD 应用程序

问题描述

光环伟大的人?

我使用下面的代码获取、解除和敬酒 USSD 响应消息,但是,我想与包含菜单或选项的 ussd 响应交互,

例如,在 USSD 的编辑文本中回复一个,然后点击发送按钮。

我该怎么办。如果您有一些参考代码、示例,或者您可以为我指明正确的方向,我将不胜感激。

提前感谢任何帮助。

谢谢,注意安全。

类 USSDService : AccessibilityService() {

@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
    val ussdResponse = event!!.text.toString().replace("[","").replace("]","")
    if( TextUtils.isEmpty(ussdResponse) ) return;
    if (event.className == "android.app.AlertDialog") {
        performGlobalAction(GLOBAL_ACTION_BACK)
        val intent = Intent("com.times.ussd.action.REFRESH")
        intent.putExtra("message",ussdResponse)

        val nodeInfo = event.source
        val list: List<AccessibilityNodeInfo> = nodeInfo.findAccessibilityNodeInfosByText("Send")
        for (node in list) {

            if (ussdResponse.contains("Select User")){
                /** I would like to perform the setting of text and replying back here... */
            }
        }



        Toast.makeText(this,ussdResponse,Toast.LENGTH_LONG).show()
        // 
    }
}

override fun onInterrupt() {
    Todo("Not yet implemented")
}

override fun onServiceConnected() {
    super.onServiceConnected()
    val info = AccessibilityServiceInfo()
    info.flags = AccessibilityServiceInfo.DEFAULT
    info.packageNames = arrayOf("com.android.phone")
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
    info.FeedbackType = AccessibilityServiceInfo.FeedBACK_GENERIC
    serviceInfo = info
}

}

/** 我找到了以下代码; */

val inputNode = source.findFocus(AccessibilityNodeInfo.FOCUS_INPUT)
val arguments = Bundle() 

arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,"2")

inputNode.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT,arguments)
for (node in list) {                                        
      node.performAction(AccessibilityNodeInfo.ACTION_CLICK)
}

本应回复 6 但返回空值。 输入为空有一个例外。

任何人都知道我做错了什么!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)