Appearance
使用方法
介绍
安卓无障碍操作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>