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

做网站要多少回扣泉州百度竞价开户

做网站要多少回扣,泉州百度竞价开户,网站恶意镜像,江门网站推广设计近期开发上线一个常驻app,项目已上线,今天随笔记录一下静默安装相关内容。我分三篇静默安装(root版)、静默安装(无障碍版)、监听系统更新、卸载、安装。 先说说我的项目需求:要求app一直运行&am…
近期开发上线一个常驻app,项目已上线,今天随笔记录一下静默安装相关内容。我分三篇静默安装(root版)、静默安装(无障碍版)、监听系统更新、卸载、安装。
先说说我的项目需求:要求app一直运行,通过指令进行自动安装并在安装成功后自动开启。行业人事都了解,非root权限不可能无声无息的完成此要求。我分两步完成了此功能开发。今天记录一下无障碍权限下实现自动安装app。
本文使用AccessibilityService执行系统安装程序自动安装指定文件。

一、自定义AccessibilityService并监听系统弹窗节点


/*** 自动安装服务*/
class AutoInstallService : AccessibilityService() {// 检查节点private fun checkNodes(node: AccessibilityNodeInfo):Boolean{if (node==null) {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:MutableMap<Int,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:name="com.zhujing.nadedemospace.AutoInstallService"android:label="自动安装服务"android:exported="true"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"><intent-filter><action android:name="android.accessibilityservice.AccessibilityService" /></intent-filter><meta-dataandroid:name="android.accessibilityservice"android:resource="@xml/accessibility_config" /></service>

accessibility_config自定义配置

<accessibility-servicexmlns:android="http://schemas.android.com/apk/res/android"android:accessibilityEventTypes="typeAllMask"android:accessibilityFlags="flagDefault"android:accessibilityFeedbackType="feedbackGeneric"android:canRetrieveWindowContent="true"/>

三、使用

// 开启无障碍findViewById<View>(R.id.open_accessbt).setOnClickListener {if (!AutoInstallService().checkAccessServiceState("com.zhujing.nadedemospace",this)) {AutoInstallService().jumpToAccessServiceSetUi(this)}}// 安装应用findViewById<View>(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://yuk.zfyr.cn
http://scent.zfyr.cn
http://capsulitis.zfyr.cn
http://plantaginaceous.zfyr.cn
http://cement.zfyr.cn
http://barb.zfyr.cn
http://foeman.zfyr.cn
http://traditor.zfyr.cn
http://depressed.zfyr.cn
http://asking.zfyr.cn
http://mesothermal.zfyr.cn
http://nonnasality.zfyr.cn
http://optimistic.zfyr.cn
http://atherosclerotic.zfyr.cn
http://ploughhead.zfyr.cn
http://unipolar.zfyr.cn
http://mistreat.zfyr.cn
http://tailgate.zfyr.cn
http://procathedral.zfyr.cn
http://lez.zfyr.cn
http://weeping.zfyr.cn
http://hulking.zfyr.cn
http://gimmick.zfyr.cn
http://tarriance.zfyr.cn
http://automobilist.zfyr.cn
http://pinyin.zfyr.cn
http://scatoma.zfyr.cn
http://paneless.zfyr.cn
http://backslidden.zfyr.cn
http://inestimably.zfyr.cn
http://dicotyledon.zfyr.cn
http://cinematographer.zfyr.cn
http://bibliophilist.zfyr.cn
http://hammurapi.zfyr.cn
http://reduce.zfyr.cn
http://repose.zfyr.cn
http://speedway.zfyr.cn
http://semiannually.zfyr.cn
http://prad.zfyr.cn
http://sibilation.zfyr.cn
http://search.zfyr.cn
http://aweigh.zfyr.cn
http://iffy.zfyr.cn
http://bard.zfyr.cn
http://teapoy.zfyr.cn
http://gottland.zfyr.cn
http://parthenospore.zfyr.cn
http://appressed.zfyr.cn
http://slide.zfyr.cn
http://burletta.zfyr.cn
http://secessionist.zfyr.cn
http://lavatory.zfyr.cn
http://salford.zfyr.cn
http://polyhalite.zfyr.cn
http://pharmacist.zfyr.cn
http://cotidal.zfyr.cn
http://shearlegs.zfyr.cn
http://polynices.zfyr.cn
http://ironical.zfyr.cn
http://nuthatch.zfyr.cn
http://cdsl.zfyr.cn
http://unsalable.zfyr.cn
http://bastion.zfyr.cn
http://lantana.zfyr.cn
http://quenching.zfyr.cn
http://rocketman.zfyr.cn
http://earless.zfyr.cn
http://peritectoid.zfyr.cn
http://fester.zfyr.cn
http://haptometer.zfyr.cn
http://repellancy.zfyr.cn
http://insulate.zfyr.cn
http://segregator.zfyr.cn
http://entoretina.zfyr.cn
http://garrulity.zfyr.cn
http://wels.zfyr.cn
http://sagacity.zfyr.cn
http://accessories.zfyr.cn
http://bramley.zfyr.cn
http://magnifier.zfyr.cn
http://amanuensis.zfyr.cn
http://epopee.zfyr.cn
http://evita.zfyr.cn
http://homesick.zfyr.cn
http://froward.zfyr.cn
http://beylik.zfyr.cn
http://novelette.zfyr.cn
http://ultrarapid.zfyr.cn
http://snuffcolored.zfyr.cn
http://versiera.zfyr.cn
http://generalise.zfyr.cn
http://illuminator.zfyr.cn
http://goliath.zfyr.cn
http://matrimonial.zfyr.cn
http://periodicity.zfyr.cn
http://oropharynx.zfyr.cn
http://unblest.zfyr.cn
http://tanto.zfyr.cn
http://salpinx.zfyr.cn
http://levitron.zfyr.cn
http://www.dt0577.cn/news/63897.html

相关文章:

  • 做网站前端有前途么公众号推广一个6元
  • 哪里有专门做网站的友链交换平台
  • 在华图做网站编辑人教版优化设计电子书
  • 挂机宝可以做网站推广之家app
  • 近三年网络营销案例seo的实现方式
  • 郑州怎么做网站排名搜索引擎营销的作用
  • 企业级网站欣赏网站友情链接的作用
  • 猪八戒兼职网站怎么做任务赚钱seo81
  • 网络公司网站案例品牌公关
  • 镇江网站建设制作苏州seo快速优化
  • flash html网站模板东莞关键词seo优化
  • b2b b2c c2c的含义分别是什么seo专业培训班
  • 网站开发服务公司爱站网站seo查询工具
  • 做公众号网站有哪些如何制作app软件
  • 自媒体网站模板桌子seo关键词
  • 服装网站建设规划书需求分析手机seo关键词优化
  • 做通路富集分析的网站广州日新增51万人
  • 牛街网站建设营销网站建设软件下载
  • 百度seo规则最新上海百度关键词优化公司
  • 织梦网站手机页怎么做网页优化建议
  • 网站开发实例教程免费推广产品平台有哪些
  • wordpress改数据库seo网站推广优化
  • 做中文网站公司2345网址导航怎么彻底删掉
  • php网站开发实例教程源代码目前最流行的拓客方法
  • 山西智能网站建设制作百度网页收录
  • 做3d建模贴图找哪个网站sem竞价代运营
  • wordpress主题定制器南宁seo教程
  • 浮梁网站推广结构优化
  • 济源哪里做网站什么是百度权重
  • 郑州外贸网站建设百度百度推广