我想使用USSD对话框,该对话框会在拨打* 123#的任何USSD代码后出现,该对话框要求用户输入选项号以执行特定任务,具体取决于SIM卡供应商.我需要与该对话框进行交互,以便以编程方式在该对话框中提供输入.

但是,我可以使用AccessibilityService在拨打任何USSD代码后读取“警报”对话框中出现的USSD响应,并且在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);

}

}

这是清单中的服务声明:

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">

android:resource="@xml/config_service" />

解决方法:

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

我将以下代码用于click事件:

List 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对话框进行交互相关推荐

  1. android冻结命令,在Android上使用冻结tensorflow图中的变量

    TLDR:如何在Android上使用冻结tensorflow图中的变量? 1.我想做什么 我有一个Tensorflow模型,它在多个变量中保持一个内部状态,用:state_var = tf.Varia ...

  2. zypper 删除mysql_如何在 Linux 上安装/卸载一个文件中列出的软件包?

    原标题:如何在 Linux 上安装/卸载一个文件中列出的软件包? 我们可以手动去安装这些软件但是这将花费大量的时间.你可以手动安装一俩个服务器,但是试想如果你有大概十个服务器呢.在这种情况下你无法手动 ...

  3. android游戏基址,Android上可执行ELF文件中的段不能有基址

    Android上可执行ELF文件中的段不能有基址 @(Android研究)[android] [TOC] 场景 我使用Android NDK的编译工具交叉编译qemu项目(编译可在Android上运行 ...

  4. android 上滑隐藏view,Android CoordinatorLayout + AppBarLayout(向上滚动隐藏指定的View)

    在新的Android Support Library里面,新增了CoordinatorLayout, AppBarLayout等. 实现的效果: 向下滚动RecylerView,Tab会被隐藏,向上滚 ...

  5. 如何在IPad上优雅地看移动硬盘中的视频

    这里用到的是SMB协议,Win10自带 文章目录 如何开启SMB 如何共享文件 如何在IPad上访问共享文件 如何在IPad上看视频呢? 如何开启SMB 众所周知,windows的SMB默认是关闭的, ...

  6. sqlite如何在android上编译,如何在Android中使用SQLITE中的准备语句?

    对于Android中准备好的SQLite语句,有SQLiteStatement..准备好的语句可以帮助您提高性能(特别是需要多次执行的语句),还有助于避免注入攻击.看见这篇文章就准备好的发言进行一般性 ...

  7. android上垂直跑马灯,android textview 垂直滚动and水平跑马灯

    垂直滚动的话就挺简单的.当然了不是自动的垂直滚动.如果是自动的垂直滚动的话还需要自定义.所以如果有需求需要textview 可以垂直滚动的话,那你来这里就对了. 直接贴 代码.就是这么任性. andr ...

  8. android 上传pdf文件,Android 加载PDF文件

    今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下. 用法很简单: 1.在build.gradle里面添加依赖 compile 'com.github.bar ...

  9. 如何在LINUX上编译运行UE4库中的新环境

    在WINDOWS上的UE4中新建工程并将UE4中环境导入 具体操作如下网页所示 https://zhuanlan.zhihu.com/p/336673072 将新建的环境工程拷贝到LINUX系统中 进 ...

  10. PHP能获取word页数吗,php - 如何在Linux上获取Word文档中的页数?

    我看到这个问题.我还需要确定给定word文件(doc/docx)的页数.我试图调查phplivedocx/zf(@hobodave链接到最初的post答案中),但我在那里失去了手脚.我也不能使用任何外 ...

最新文章

  1. c++ opencv imencode imdecode string转换
  2. Python:3种方式实现随机生成8位字符
  3. QUIC实战(一) 通过Quiche部署支持HTTP3 的NGINX
  4. 在IIS 5.1 或IIS6 中配置PHP 的FastCGI模式
  5. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构
  6. C++编译报错:重复定义
  7. Java ByteArrayInputStream mark()方法与示例
  8. 微型计算机杂志合订本,微型计算机(2008上半年合订本)(上下)(附光盘)
  9. 福泉服务器维修,欢迎访问##福泉小松挖掘机维修服务##实业集团
  10. centoss7 yum 安装 wget
  11. phpstorm连接不上MySQL_PHPStorm无法连接到本地MySQL [重复]
  12. 基于强化学习的综合能源系统管理综述-笔记
  13. 使用 sublime数组转换成逗号分割文本
  14. html模板原型,政务管理系统原型模板分享
  15. php掷骰子小游戏代码,C语言实现掷骰子游戏代码及解析
  16. Mud Puddles ( bfs )
  17. Python爬虫面试简历 经验分析
  18. 25个带有酷炫动画的创意404错误页面,快给你的网站换上吧(持续更新)
  19. 40了解云计算平台的高可用架构,如 AWS 的多可用区、GCP 的负载均衡器
  20. BOBST工控机触摸屏维修博斯特人机界面维修

热门文章

  1. Hadoop经典面试题
  2. 威纶通触摸屏232脚位_威纶触摸屏tk6070iq232接口引脚电 – 手机爱问
  3. 用R语言生成均匀设计
  4. 如何编写makefile文件
  5. 众多电子秤方案免费拿~挑一个?
  6. java代码混淆加密_关于Java加壳和代码混淆
  7. caffe 安装报错解决办法
  8. 【信息学奥赛一本通】题解目录答案
  9. 思维导图有什么用?思维导图的优势、缺点及其适用人群详解 #CSDN博文精选# #知识图谱# #IT技术# #思维导图#
  10. creo绘图属性模板_Creo定制模型及绘图模板.doc