阅读 983

Andorid-如何拒绝「无障碍」跳过开屏广告?

第一步:设置无障碍代理

adSkipView.setAccessibilityDelegate(object : AccessibilityDelegate() {
            override fun performAccessibilityAction(host: View?, action: Int, args: Bundle?): Boolean {
                //忽略AccessibilityService传过来的点击事件以达到防止模拟点击的目的
                return if (action == AccessibilityNodeInfo.ACTION_CLICK 
                       || action == AccessibilityNodeInfo.ACTION_LONG_CLICK) {
                    true
                } else super.performAccessibilityAction(host, action, args)
            }
        })
复制代码

第二步:拒绝 => 无障碍的位置模拟点击

val accessibilityManager: AccessibilityManager = getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
adSkipView.setOnTouchListener({ v, event ->
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
          if (null != accessibilityManager && accessibilityManager.isEnabled()) {
              //可以直接拦截无障碍的【坐标】点击,不影响用户正常的手动点击
              adSkipView.setClickable(false)
            }
         }
         false
      })
复制代码

这样你的开屏广告就不会被那些,用无障碍的模拟点击,跳过你的开屏广告了。

文章分类
Android
文章标签