建网页和建网站教做3d的网站

diannao/2025/10/22 13:43:34/文章来源:
建网页和建网站,教做3d的网站,优良的定制网站建设服务商,热门推广软件近期开发上线一个常驻app#xff0c;项目已上线#xff0c;今天随笔记录一下静默安装相关内容。我分三篇静默安装#xff08;root版#xff09;、静默安装#xff08;无障碍版#xff09;、监听系统更新、卸载、安装。 先说说我的项目需求#xff1a;要求app一直运行项目已上线今天随笔记录一下静默安装相关内容。我分三篇静默安装root版、静默安装无障碍版、监听系统更新、卸载、安装。 先说说我的项目需求要求app一直运行通过指令进行自动安装并在安装成功后自动开启。行业人事都了解非root权限不可能无声无息的完成此要求。我分两步完成了此功能开发。今天记录一下无障碍权限下实现自动安装app。 本文使用AccessibilityService执行系统安装程序自动安装指定文件。一、自定义AccessibilityService并监听系统弹窗节点 /*** 自动安装服务*/ class AutoInstallService : AccessibilityService() {// 检查节点private fun checkNodes(node: AccessibilityNodeInfo):Boolean{if (nodenull) {return false}if (node.className.isEmpty()) {return false}try {// 检查当前窗体if (node.className.equals(android.widget.Button)) {if (node.text.toString().isEmpty()) {return false}// 模拟点击if (node.text.equals(安装)||node.text.equals(完成)||node.text.equals(打开)||node.text.equals(确定)) {node.performAction(AccessibilityNodeInfo.ACTION_CLICK)return true}// 检查滑动节点} else if (node.className.equals(android.widget.ScrollView)){node.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD)}// 检查下级窗体for (i in 0..node.childCount) {var child node.getChild(i)if (checkNodes(child)) {return true}}}catch (e:Exception){e.printStackTrace()}return false}private var nodes:MutableMapInt,Boolean LinkedHashMap()// 分析系统弹窗节点override fun onAccessibilityEvent(p0: AccessibilityEvent?) {// 监听系统窗体p0?.let {it.source?.let {obj-{var eventType it.eventTypeif (eventType AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED || eventType AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {// 监听窗体节点if (nodes.get(it.windowId) null) {if (checkNodes(obj))nodes.put(it.windowId,true)}}}}}}// 销毁override fun onDestroy() {super.onDestroy()jumpToAccessServiceSetUi(this)}// 连接成功后退出设置页面override fun onServiceConnected() {super.onServiceConnected()// 连接成功执行返回按钮performGlobalAction(GLOBAL_ACTION_BACK)Thread.sleep(500L)performGlobalAction(GLOBAL_ACTION_BACK)}override fun onInterrupt() {}// 跳转辅助服务fun jumpToAccessServiceSetUi(context:Context){context?.let {try {it.startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))}catch (e:Exception){var intent Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)intent.flags Intent.FLAG_ACTIVITY_NEW_TASKit.startActivity(intent)e.printStackTrace()}}}/*** 检查辅助服务是否开启* appcaliionId 应用id* ct 设备id*/fun checkAccessServiceState(appcaliionId:String,ct:Context):Boolean{try {var state Settings.Secure.getInt(ct.contentResolver, Settings.Secure.ACCESSIBILITY_ENABLED, 0)if (state ! 1) {return false} else{var serviceName Settings.Secure.getString(ct.contentResolver,Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)if (serviceName.isEmpty()) {return serviceName.contains(appcaliionId)}return false}} catch (e:Exception){e.printStackTrace()}return false}}这是我自定的AccessibilityService内部包含了跳转到开启AccessibilityService设置页面分析系统弹窗节点添加安装节点自动执行。开启AccessibilityService服务销毁后重新开启AccessibilityService。 2、AccessibilityService注册 在清单文件中注册自定义的AutoInstallService service android:namecom.zhujing.nadedemospace.AutoInstallServiceandroid:label自动安装服务android:exportedtrueandroid:permissionandroid.permission.BIND_ACCESSIBILITY_SERVICEintent-filteraction android:nameandroid.accessibilityservice.AccessibilityService //intent-filtermeta-dataandroid:nameandroid.accessibilityserviceandroid:resourcexml/accessibility_config //serviceaccessibility_config自定义配置 accessibility-servicexmlns:androidhttp://schemas.android.com/apk/res/androidandroid:accessibilityEventTypestypeAllMaskandroid:accessibilityFlagsflagDefaultandroid:accessibilityFeedbackTypefeedbackGenericandroid:canRetrieveWindowContenttrue/三、使用 // 开启无障碍findViewByIdView(R.id.open_accessbt).setOnClickListener {if (!AutoInstallService().checkAccessServiceState(com.zhujing.nadedemospace,this)) {AutoInstallService().jumpToAccessServiceSetUi(this)}}// 安装应用findViewByIdView(R.id.install_apk).setOnClickListener {//var intent Intent(Intent.ACTION_GET_CONTENT)intent.type */*intent.addCategory(Intent.CATEGORY_OPENABLE)startActivityForResult(intent,100)}// 调用系统安装方法 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode 100 resultCode RESULT_OK data?.data ! null){var uri data?.datavar intent Intent(Intent.ACTION_VIEW)intent.flags Intent.FLAG_ACTIVITY_NEW_TASKintent.setDataAndType(uri,application/vnd.android.package-archive)startActivity(intent)}} 四、总结 我使用的是AccessibilityService无障碍服务实现自动安装的严格意义上这并不算静默安装。andorid系统被限制的角度来说这也是一种曲线救国的实现方式。能够满足无需用户手动操作实现应用安装。欢迎各位指导……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人网站有哪些板块创世网站建设

文章目录 父子组件的渲染机制优化手段与实践写法父组件:下发stateprops.children 传递无状态组件props传递组件 React.memo缓存子组件与useCallback结合 父子组件的渲染机制 渲染分初次渲染和重新渲染 React组件会在两种情况下发生重新渲染 当组件自身的state发生…

做网络推网站推广的目的黑户可做网站

本地TS播放过程 本地M3U8播放过程 http工作流程 http分两个步骤 1、获取m3u8文件,这个是在哪里开始读的? 2、获取data数据,这个是从http_read开始读,可以通过修改这里实现buffer数据和引擎对接 3、s->user_agent,s->off,…

房产网站方案扫描网站漏洞的软件

题目: 编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2,并返回该值。 如果 number 是奇数,collatz()就打印并返回 3 * number 1。 然后编写一个程序&a…

公司网站改版方案网站开发薪资

**单片机设计介绍,基于单片机干湿垃圾自动分类系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的干湿垃圾自动分类系统是一个集成传感器技术、机械控制和单片机编程于一体的自动化解决方案。该系统的主要目标是实…

培训网站免费在线做ppt

文章目录一、创建SpringBoot项目二、添加Mybatis相关依赖三、数据源配置四、创建事务的模型实体类五、创建和数据库交互联系的映射关系类六、创建业务接口和实现类七、创建控制器类八、请求验证一、创建SpringBoot项目 如何创建详见:IDEA 创建 SpringBoot 项目 二、…

网站如何做软文推广wordpress xiu主题

我正在尝试创建一个动态数据库创建脚本.有很多步骤,我们经常创建这个数据库,所以脚本看起来像这样.DECLARE databaseName nvarchar(100) DatabaseNameEXEC(/*A lot of database creation code built off of databaseName*/)除了我们在此数据库中创建的一个视图外,这一切都很好…

网站维护进不去怎么办网站服务器ip

客户端缓存是万维网的基础之一。 服务器应告知客户端资源的有效性,客户端应尽可能快地对其进行缓存。 如我们所见,如果不缓存Web,将会非常慢。 只需在任何网站上Ctrl F5并将其与普通F5进行比较-后者就会更快,因为它使用了已缓存的…

广州企业网站建设开发创意交易平台官网

解题思路: 输入n3 n 0 1个 n 1 1个 n 2 2个 头1头2头3 头1 左子树0节点(个数)x右子树2个节点(个数) 头2 左子树1节点(个数)x右子树1个节点(个数) 头3 左子…

国内很多网站不是响应式宁波北京网站建设

过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效。 如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,r…

网站开发查找漏洞的工具天津市建设与管理网站

关于北京同创天成工程勘测有限公司等29家单位申报甲级测绘资质审查意见的公示  根据《中华人民共和国测绘法》和《测绘资质管理规定》《测绘资质分级标准》(国测管发〔2014〕31号),我部对北京同创天成工程勘测有限公司、北京麦格天宝科技股份有限公司、中友四达(北…

没有备案的网站怎么访问合肥网站建设 微笑互联

算法题 Leetcode 39. 组合总和 题目链接:39. 组合总和 大佬视频讲解:组合总和视频讲解 个人思路 这道组合题主要是有总和的限制,当递归和超过了总和就return,递归时加上回溯去遍历数组。 解法 回溯法 把组合问题抽象为如下树形结构 如上…

网站开发与数据库网站美工做专题尺寸多少

来源:神经科技近日,在针对健康志愿者的的一项研究中,美国国立卫生研究院(NIH)的研究人员发现,大脑可能会通过短暂的休息来巩固我们几秒钟前刚练习过的新技能的记忆。该研究结果强调了早期休息在学习中可能发…

做职业装的网站公司网站招聘费如何做会计分录

2021牛客暑期多校训练营2 题号题目知识点AArithmetic ProgressionBCannonCDraw GridsDEr Ba GameEGas StationFGirlfriendGLeague of LegendsHOlefinIPenguinsbfsJProduct of GCDsKStackLWeChat Walk

网站定制开发公司推荐wordpress资源站

nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据在nodejs中安装modbus-serial库本人使用的开发环境是Windows10下的VSCode,安装并配置好了npm、node、cnpm等工具,使用cnpm安装了modbus-serial库,可以在npm中搜到modbus-serial包以及…

门户网站建设和运行招标公告双线网站选服务器

转载自 面象对象设计6大原则之六:迪米特原则迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则定义一个对象应该对其他对象有最少的了解。也就是说一个类耦合和调用一个类应该知道的最少,它只关心被耦…

网站推广初期目标网站海外推广资源

国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排; 然后,让各位新郎寻找自己的新娘.每人只准找一个,…

vs做网站开发吗绛帐做企业网站

【前沿技术杂谈:迁移学习】欧洲人工智能法案对人工智能开发者的意义 [2023 年 12 月更新] 定义、一般原则和禁止做法人工智能系统开发者基于风险的义务固定和通用人工智能开发人员(第 3/28 条)基础模型的提供者(第 28b…

深圳龙华 网站建设网站建设vipjiuselu

本节复习排序中的希尔排序,希尔排序属于插入排序。 希尔排序的代码和插入排序非常类似。 思想却相对于插入排序来说复杂。 在复习希尔排序之前, 我们需要先复习一下插入排序。 目录 插入排序 插入过程 代码实现 希尔排序 希尔排序的思想 代码实…

做加工都在哪个网站推广电商网站创办过程

英杰社区https://bbs.csdn.net/topics/617804998 一、背景 近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程 序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。 程序包含以下几个部…

阿里云的网站接入方式网站空间 群集

反射 反射的概念 反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到加载完类之后,在堆中就产生了一个Class类型…