使用 AccessibilityService 获取手机屏幕显示的Activity

简介: 使用 AccessibilityService 获取手机屏幕显示的Activity

使用 AccessibilityService 获取手机屏幕显示的Activity

1、重新AccessibilityService (没有这么简单)

class SimulatedClickService : AccessibilityService() {

   @RequiresApi(api = Build.VERSION_CODES.N)

   override fun onAccessibilityEvent(event: AccessibilityEvent) {

            var name = event.getClassName().toString();

              if (name.contains("com.")) {

                   if (name.contains(event.packageName)) {

                       name = name.replace(event.packageName.toString(), "");

                       name = name.replace("..", "")

                       if (name.get(0) == '.')

                           name = name.substring(1);

                   }

                   activityName = name

          //这就获取到了包名和top顶部的activity  

          //tip?.text="${event.packageName}${name}"  // 开启悬浮窗 可以显示到窗口上

            loge("${event.packageName}${name}")

     

}

   /**

    * 中断服务的回调

    */

   override fun onInterrupt() {

   

   }

   /**

    * 当服务启动时的回调,可以做一些初始化操作

    */

   @RequiresApi(api = Build.VERSION_CODES.N)

   override fun onServiceConnected() {

   }

}


2、配置AccessibilityService在AndroidManifest

             

                   android:name=".SimulatedClickService"

                   android:enabled="true"

                   android:exported="true"

                   android:label="@string/click_window_screen"

                   android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">

                 

                     

                 

                 

                       android:name="android.accessibilityservice"

                       android:resource="@xml/accessibility_service_config" />

             

3、配置AccessibilityService在xml

在res下的xml文件下新建accessibility_service_config.xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault"
    android:canPerformGestures="true"
    android:description="@string/app_name"
    android:packageNames="com.duiyi.simulatedclick" />

想知道里面的具体含义可以去百度,百度一大堆


4、开启无障碍

@RequiresApi(api = Build.VERSION_CODES.M)
    fun startFloatingService() {
        if (!Settings.canDrawOverlays(this)) {
            startActivityForResult(
                Intent(
                    Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse(
                        "package:$packageName"
                    )
                ), 0x0002
            )
        } else {
            try {
            try {
                startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))
            } catch (e: Exception) {
                Log.i(TAG, "start ACTION_ACCESSIBILITY_SETTINGS fail: " + e.message)
                startActivity(Intent(Settings.ACTION_SETTINGS))
            }
        }
    }


目录
相关文章
|
移动开发 前端开发 JavaScript
【值得收藏】HTML5使用多种方法实现移动页面自适应手机屏幕的方法总结
随机智能手机,平板等智能移动设备的普及。移动端是我们目前接触最多的页面展示终端,不管是对于开发者还是其他普通的使用者都是普遍的存在,而且移动终端的使用比电脑更广泛,更频繁,特别是当微信平台等变成我们日常使用工具之后。所以对于开发者来说,不管任何开发任何界面都需要着重考虑页面对移动设备的兼容以及自适应。才能让用户体验性更好。
1806 0
|
3月前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
6015 73
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
3月前
|
编解码 异构计算
无影云电脑产品使用黑神话悟空之是否可以想主播们玩的那样手机屏幕上有虚拟按键
这段内容主要讨论了无影云电脑在使用过程中遇到的五个问题及其解答,包括是否能在手机屏幕上显示虚拟按键、解决服务器网络异常导致的连接问题、处理活动前购买的云电脑无法开启电竞模式的情况、解决游戏崩溃问题,以及处理打开游戏时报错的问题。文中提供了详细的解决步骤和参考链接。
|
7月前
|
编解码 人工智能 自然语言处理
让大模型理解手机屏幕,苹果多模态Ferret-UI用自然语言操控手机
【5月更文挑战第29天】苹果推出Ferret-UI,一个结合图像识别和自然语言处理的多模态大语言模型,允许用户通过自然语言指令操控手机。该系统能适应不同屏幕布局,识别UI元素并执行相应操作,有望变革手机交互方式,提升无障碍体验,并在测试和开发中发挥作用。但需面对屏幕多样性及准确性挑战。[论文链接](https://arxiv.org/pdf/2404.05719.pdf)
182 3
|
7月前
|
编解码 移动开发 安全
如何让你的APP变小及手机各屏幕尺寸
如何让你的APP变小及手机各屏幕尺寸
151 0
为什么香肠能激活手机屏幕,手套不能
这是一个简单的科普文章 2010年 韩国经历了一个特别寒冷的冬天,人们戴着手套时 无法启动智能手机
|
编解码 移动开发 前端开发
一款超强的手机屏幕投影工具
一款超强的手机屏幕投影工具
一款超强的手机屏幕投影工具
|
API Android开发
Android 中获取手机屏幕的宽度和高度(单位为像素)
Android 中获取手机屏幕的宽度和高度(单位为像素)
366 0
|
Android开发
Android实现手机和电脑屏幕共享
Android实现手机和电脑屏幕共享
|
Windows
【电脑控制手机屏幕】windows11、10自带投屏功能,三步解决
想用电脑控制手机,但是下载第三方软件好麻烦,只需三步骤即可使用windows系统自带投屏插件实现投屏功能
1406 0