当前位置: 首页 > news >正文

网站开发组织架构图冠县网站建设

网站开发组织架构图,冠县网站建设,wordpress中文版 显示英文,国内知名网站建设公司近期开发上线一个常驻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.hkea.cn/news/14544964/

相关文章:

  • 没公司怎么做网站商标设计找哪里
  • 网站购物车js代码怎么做济南制作网站公司哪家好
  • 成都网站建设低价天津正规制作网站公司
  • 外贸网站怎么做谷歌搜索中国建设银行app下载安卓版
  • 中国建设网官方网站企业网银韩国导航地图中文版app
  • 做网站服装app网络电话聊天网站建设多少钱
  • 小白怎么做网站外贸自建站有哪些
  • 全国购网站建设河北城乡建设厅网站显示不全
  • wordpress 默认文本编辑器郑州seo技术代理
  • 网站建设交流平台做塑料哪个网站好
  • 无锡做网站公司电话苏宁易购电商网站建设需求分析
  • 深圳商城网站建设报价餐饮行业做网站的好处
  • 企业网站排名运营山西建站
  • 功能介绍的网站哪些网站可以免费做推广呢
  • 网站主页作品欣赏网站开发文档百度文库
  • 怎么建立网站 个人律所网站建设要求书
  • 亚马逊网站建设案例分析儿童故事网站建设
  • 龙华建站公司工地模板多少钱一张
  • 中国网站开发公司排名株洲百度推广
  • hi宝贝网站建设那家好怎么开发游戏软件赚钱
  • 东莞网站建设黄页免费软件centos wordpress 500
  • 凡科网站建设步骤嵌入式培训心得
  • 均安建网站404源码网html
  • 山西住房和城乡建设部网站首页北京门户网站建设
  • 做调查问卷的网站徐州最大的网络平台公司
  • 中国网站排名榜网站开发培训班
  • 网站建设与案例管理的心得体会无货源电商怎么起步
  • 制作单位网站专业seo网络推广
  • 网站建设公司中企动力江苏建设教育网官网
  • 圆通我做网站拉企业网络营销方案策划书