Android 辅助功能 -抢红包(三)

这篇具有很好参考价值的文章主要介绍了Android 辅助功能 -抢红包(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android 辅助功能 -抢红包(三)

本篇文章继续讲述辅助功能.

主要通过监听通知栏红包消息,来跳转聊天页面,并自动回复对方"谢谢".

上篇文章我们讲述了监听notification, 跳转聊天界面. 具体可查看:

Android 辅助功能 -抢红包(二)

1: 使用monitor抓取id.

Android 辅助功能 -抢红包(三)

打开android device monitor 获取resouce-id 备用.

2: 设置聊天框文本

通过步骤1获取到的resouce-id来获取AccessibilityNodeInfo.

List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bkk");

找到edit结点后, 设置edit文本内容,具体方法为performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, Bundle).

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "谢谢");
accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

3: 点击发送

List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bql");
for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {
    accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
    step = 0;
}

仍然通过findAccessibilityNodeInfosByViewId找到发送按钮的结点, 调用AccessibilityNodeInfo.ACTION_CLICK 发送文本.

完整的代码如下:

public class RedPacketAccessibilityService extends AccessibilityService {
    private static final String TAG = "RedPacketAccessibilityService";
    private int step = 0;

    @SuppressLint("LongLogTag")
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        int action = event.getAction();
        Log.i(TAG, "onAccessibilityEvent: " + action);
        CharSequence packageName = event.getPackageName();
        Log.i(TAG, "onAccessibilityEvent: " + packageName);

        AccessibilityNodeInfo rootInActiveWindow = getRootInActiveWindow();
        if (rootInActiveWindow != null) {
//            List<AccessibilityNodeInfo> nodeInfos = rootInActiveWindow.findAccessibilityNodeInfosByText("红包:恭喜发财");
//            if (nodeInfos != null) {
//                for (AccessibilityNodeInfo nodeInfo : nodeInfos) {
//                    nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
//                }
//            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
                //第二步骤: 设置文本edit内容
                if (step == 1) {
                    List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bkk");
                    if (accessibilityNodeInfosByViewId != null) {
                        Log.i(TAG, "onAccessibilityEvent: 查找edit");
                        for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {
                            Bundle arguments = new Bundle();
                            arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "谢谢");
                            accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
                            step = 2;
                        }
                    }
                }
            }
        }

        Log.i(TAG, "onAccessibilityEvent: step =" + step);
        //点击发送按钮,发送谢谢
        if (step == 2) {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
                List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bql");
                for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {
                    accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                    step = 0;
                }
            }
        }


        switch (event.getEventType()) {
            case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
                List<CharSequence> text = event.getText();
                for (CharSequence charSequence : text) {
                    Log.i(TAG, "onAccessibilityEvent: notification ->" + charSequence);
//                    if (charSequence.toString().contains("请求添加") ||
//                            charSequence.toString().contains("[微信红包]"))
                    if (charSequence.toString().contains("[微信红包]")) {
                        step = 0; //重置
                        Parcelable parcelableData = event.getParcelableData();
                        if (parcelableData != null && parcelableData instanceof Notification) {
                            PendingIntent contentIntent = ((Notification) parcelableData).contentIntent;
                            new Handler().postDelayed(() -> {
                                try {
                                    //第一步:跳转聊天界面
                                    contentIntent.send();
                                    step = 1;
                                } catch (PendingIntent.CanceledException e) {
                                    Log.e(TAG, "onAccessibilityEvent: ", e);
                                }
                            }, 1000);
                        }
                    }
                }
                break;
            case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
                List<CharSequence> text1 = event.getText();
                for (CharSequence charSequence : text1) {
                    Log.i(TAG, "onAccessibilityEvent: TYPE_VIEW_TEXT_CHANGED ->" + charSequence);
                }
                break;
            case AccessibilityEvent.TYPE_VIEW_CLICKED:
                List<CharSequence> text2 = event.getText();
                for (CharSequence charSequence : text2) {
                    Log.i(TAG, "onAccessibilityEvent: TYPE_VIEW_CLICKED ->" + charSequence);
                }
                break;
        }

    }

    @Override
    public void onInterrupt() {

    }
}

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-840322.html

到了这里,关于Android 辅助功能 -抢红包(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java项目】我是如何实现抢红包功能的?

    使用的就是redis的list集合,然后这里有一个意外情况就是: redis如果当前用户取出数据成功了,但是此时redis宕机了,然后aof同步失败,那么下一次恢复了后,就会拿到这条没有出队的数据,数据就出错了。 但是这个线程他是成功的,所以它可以成功的执行对数据库的操作。

    2024年02月09日
    浏览(31)
  • 辅助驾驶功能开发-功能规范篇(22)-6-L2级辅助驾驶方案功能规范

     1.3.6 ELK 系统功能定义         ELK全称Emergency Lane Keeping,即紧急车道保持。当车辆与道路边界护栏(包含隔离带护栏、路锥、水马) 有碰撞危险或当车辆正偏出道路边沿且存在“对向来车”或“后向来车”与本车有碰撞风险时,通过给与转向反力矩进行车辆横向运动介入

    2024年02月06日
    浏览(28)
  • 辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-HMI人机交互

     书接上回 2.3.7HMI人机交互 2.3.7.1显示 (1)图标 序号 图标状态 (图形、颜色供参考) 含义说明 备注 1 辅助驾驶功能READY (允许激活) 2 辅助驾驶功能激活 3 辅助驾驶系统故障 4

    2024年02月08日
    浏览(29)
  • Redis辅助功能

    模糊发布,订阅,退订, p* channelName 订阅某个频道或模式: 客户端 (client) : pubsub_channels,该属性表明了该客户端订阅的所有频道; pubsub_patterns,该属性表示该客户端订阅的所有模式; 服务器端 (RedisServer) : pubsub_channels,该服务器端中的所有频道以及订阅了这个频道的客户端;

    2024年02月13日
    浏览(21)
  • Elasticsearch搜索辅助功能解析(十)

            ES提供的各种搜索辅助功能。例如,为优化搜索性能,需要指定搜索结果返回一部分字段内容。为了更好地呈现结果,需要用到结果计数和分页功能;当遇到性能瓶颈时,需要剖析搜索各个环节的耗时;面对不符合预期的搜索结果时,需要分析各个文档的评分细节

    2024年02月13日
    浏览(37)
  • Android studio如何安装ai辅助工具

    在没有翻墙的情况下,即单纯在公司打工,经测试,大部分ai工具都是使用不了的(比如各种gpt,codeium,copilot),根本登录不了账号,但有一个国内的 codegeex 是可以使用的,在这里不对各工具是否好用做评价,单纯选一个能用的试试。 第一步,安装 在android studio的插件商店(

    2024年02月04日
    浏览(30)
  • 【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

    我们可以先从Settings的启动来看, 先进入到AndroidManifest.xml 找到启动的Activity

    2024年02月10日
    浏览(108)
  • android如何通过adb快速开启、关闭辅助副屏

    adb 指令 效果

    2024年02月01日
    浏览(42)
  • Elasticsearch(八)搜索---搜索辅助功能(上)--指定搜索返回字段,结果计数和分页

    前面我们已经将ES的基础操作(索引,映射,文档)学习过了,从这一章开始,我们便开始学习ES的最大的功能—搜索 ES为用户提供了丰富的搜索功能:既有基本的搜索功能,又有搜索建议功能;既有常用的普通类型的匹配功能,又有基于地理位置的搜索功能;既提供了分页搜

    2024年02月05日
    浏览(39)
  • 利用财务软件中的辅助核算功能进行指定业务项的业务过程会计监测

    辅助核算是现行的财务软件常采用的功能,常用的辅助核算项目有个人、部 门、项目、供应商、客户等。但要对指定业务项进行核算,这些项目显然不够。所 以,主流的会计软件又提供了自定义项的辅助核算设置。如用友 ERP-U8 V8.71 中,提供了多达 16 条自定义项的选择设置

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包