Skip to content

使用方法

介绍

安卓无障碍操作UTS原生插件,插件集成了各种无障碍操作,包括监听无障碍服务的各种操作,开启无障碍服务,关闭无障碍服务,节点操作,粘贴文本到输入框中等,插件UTS开发,支持uniapp x

联系作者

关注微信公众号可联系作者

插件地址

https://ext.dcloud.net.cn/plugin?id=20019

用法

在需要使用插件的页面加载以下代码

js
import * as module from "@/uni_modules/leven-uts-accessibility"

页面内容

vue
<template>
  <view>
    <uni-card title="安卓无障碍操作UTS原生插件">
      <button type="primary" @click="setListener">监听无障碍服务</button>
      <button type="primary" @click="removeListener">取消监听无障碍服务</button>
      <button type="primary" @click="openService">开启无障碍服务</button>
      <button type="primary" @click="stopService">关闭无障碍服务</button>
      <button type="primary" @click="isOpenService">无障碍服务是否开启</button>
      <button type="primary" @click="getAllNodes">获取所有的节点</button>
      <button type="primary" @click="getContainTextNodes">获取包含文字的节点</button>
      <button type="primary" @click="clickContainTextNodes">点击包含文字的节点</button>
      <button type="primary" @click="getNodesByIds">根据id集合获取节点</button>
      <button type="primary" @click="clickNodesByIds">点击包含id集合的节点</button>
      <button type="primary" @click="getAllEditableNodes">获取所有的可输入的节点</button>
      <button type="primary" @click="pasteTextToEditor">粘贴文本到输入框</button>
      <button type="primary" @click="logStr = ''">清空日志</button>
    </uni-card>
    <uni-card class="uni-card-box" title="日志">
      <view><text style="font-size: 14px; flex-wrap: wrap;">{{logStr}}</text></view>
    </uni-card>
  </view>
</template>

<script>
  import * as module from "@/uni_modules/leven-uts-accessibility"
  export default {
    data() {
      return {
        logStr: "",
      }
    },
    methods: {
      //粘贴文本到输入框
      pasteTextToEditor() {
        module.pasteTextToEditor({
          //文本内容
          text: "这是一条测试数据",
          //输入框索引,可通过getAllEditableNodes获取
          index: 0
        }, res => {
          this.writeLog("粘贴文本到输入框:" + JSON.stringify(res))
        });
      },
      //获取所有可输入的节点
      getAllEditableNodes() {
        module.getAllEditableNodes(res => {
          this.writeLog("获取所有可输入的节点:" + JSON.stringify(res))
        });
      },
      //点击包含id集合的节点
      clickNodesByIds() {
        module.clickNodesByIds({
          list: ["com.tencent.mm:id/a3u", "com.tencent.mm:id/a3y"],
          //点击第几个索引,该索引可以通过getNodesByIds获取
          index: 0
        }, res => {
          this.writeLog("点击包含id集合的节点:" + JSON.stringify(res))
        });
      },
      //获取id集合的节点
      getNodesByIds() {
        module.getNodesByIds({
          list: ["com.tencent.mm:id/a3u", "com.tencent.mm:id/a3y"]
        }, res => {
          this.writeLog("获取id集合的节点:" + JSON.stringify(res))
        });
      },
      //点击包含文字的节点
      clickContainTextNodes() {
        //可通过此方法获取到是否有红包^_^,可以抢红包哦
        module.clickContainTextNodes({
          //包含的文本
          list: ["恭喜发财"],
          //点击第几个索引,该索引可以通过getContainTextNodes获取
          index: 0
        }, res => {
          this.writeLog("点击包含文字的节点:" + JSON.stringify(res))
        });
      },
      //获取包含文字的节点
      getContainTextNodes() {
        //可通过此方法获取到是否有红包^_^
        module.getContainTextNodes({
          //"红包", "恭喜发财", "好"
          list: ["红包", "恭喜发财", "好"]
        }, res => {
          this.writeLog("获取包含文字的节点:" + JSON.stringify(res))
        });
      },
      //获取所有的节点
      getAllNodes() {
        module.getAllNodes(res => {
          this.writeLog("获取所有的节点:" + JSON.stringify(res))
        });
      },
      //无障碍服务是否开启
      isOpenService() {
        module.isOpenService(res => {
          this.writeLog("无障碍服务是否开启:" + JSON.stringify(res))
        });
      },
      //关闭无障碍服务
      stopService() {
        module.stopService(res => {
          this.writeLog("关闭无障碍服务:" + JSON.stringify(res))
        });
      },
      //开启无障碍服务
      openService() {
        //改方法没有回调,开启成功会在监听中回调
        module.openService();
      },
      //取消监听无障碍服务
      removeListener() {
        //该方法没有回调,取消监听后会在监听中回调然后监听失效
        module.removeListener();
      },
      //监听无障碍服务
      setListener() {
        module.setListener({
          // 监听的应用包名
          packageNames: ['com.tencent.mm', 'com.tencent.mobileqq']
        }, res => {
          //因为打印内容比较多所以注释掉当前代码
          // this.writeLog("监听无障碍服务:" + JSON.stringify(res))
          if (res.data && res.data.type) {
            if (res.data.type == "onEvent") {
              if (res.data.data.type == "viewClick") {
                //此处做测试使用,因为没有监听当前应用,所以只能在这里做测试
                this.writeLog(JSON.stringify(res))
                //视图被点击
                // this.getAllNodes();
                // this.getContainTextNodes();
                // this.clickContainTextNodes();
                // this.getNodesByIds();
                // this.clickNodesByIds();
                // this.getAllEditableNodes();
                this.pasteTextToEditor();
              }
            } else {
              this.writeLog("监听无障碍服务:" + JSON.stringify(res))
            }
          }
        })
      },
      // 写日志
      writeLog(str) {
        console.log(str)
        let logStr = uni.$lv.date.format(null, "yyyy-mm-dd hh:MM:ss") + " " + str + "\n";
        // let logStr = str + "\n";
        this.logStr = logStr + this.logStr;
      }
    }
  }
</script>

<style>

</style>