Android 辅助功能 -抢红包

Android 辅助功能 -抢红包

本篇文章主要介绍下通过android辅助功能的方式来实现类似抢红包的功能.

1:权限声明

<uses-permission
    android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"
    tools:ignore="ProtectedPermissions" />

2: 配置信息

xml目录下创建如下文件:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"
    android:description="@string/desc"
    android:packageNames= "com.test.redpacket">
</accessibility-service>
  1. android:accessibilityEventTypes 定义服务要监听的事件类型
  2. android:accessibilityFeedbackType 定义了服务的反馈类型
  3. android:accessibilityFlags 定义服务的行为标志
  4. android:description 描述信息 (需要使用资源文件配置)
  5. android:canRetrieveWindowContent 定义了服务是否可以获取窗口内容
  6. android:packageNames定义了监听的包名

3: 自定义AccessibilityService

具体的代码如下:

public class RedPacketAccessibilityService extends AccessibilityService {
    private static final String TAG = "RedPacketAccessibilityService";

    @SuppressLint("LongLogTag")
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        int action = event.getAction();
        Log.i(TAG, "onAccessibilityEvent: " + action);
        CharSequence packageName = event.getPackageName();
        Log.i(TAG, "onAccessibilityEvent: " + packageName);
        AccessibilityNodeInfo rootInActiveWindow = getRootInActiveWindow();
        if (rootInActiveWindow != null) {
            List<AccessibilityNodeInfo> nodeInfos = rootInActiveWindow.findAccessibilityNodeInfosByText("红包:恭喜发财");
            if (nodeInfos != null) {
                for (AccessibilityNodeInfo nodeInfo : nodeInfos) {
                    nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                }
            }
        }

    }

    @Override
    public void onInterrupt() {

    }
}

此处通过findAccessibilityNodeInfosByText来查找节点了, 我们还可以使用 findAccessibilityNodeInfosByViewId来实现.

4: 服务声明

在manifest.xml中声明服务.

<service
    android:name=".RedPacketAccessibilityService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/acc" />
</service>

5: 测试代码

public class MainActivity extends AppCompatActivity {
    private Button btnSend;
    private TextView tvMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnSend=findViewById(R.id.btn_send);
        tvMsg=findViewById(R.id.tv_msg);
        Intent serviceIntent = new Intent(this, RedPacketAccessibilityService.class);
        startService(serviceIntent);
        btnSend.setOnClickListener(v -> {
            tvMsg.setText("红包:恭喜发财");
        });
        tvMsg.setOnClickListener(v -> {
            tvMsg.setText("消息展示");
            Toast.makeText(MainActivity.this,"抢红包",Toast.LENGTH_SHORT).show();
        });
    }
}

相关推荐

  1. Android 辅助功能 -红包

    2024-03-14 06:00:01       19 阅读
  2. PTA天梯 L2-009 红包

    2024-03-14 06:00:01       23 阅读
  3. Rust基础拾遗--辅助功能

    2024-03-14 06:00:01       34 阅读
  4. 自动驾驶右向辅助功能规范

    2024-03-14 06:00:01       36 阅读
  5. 使用android辅助服务监听Activity打开

    2024-03-14 06:00:01       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 06:00:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 06:00:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 06:00:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 06:00:01       20 阅读

热门阅读

  1. C#+datax实现sql server数据同步到redis

    2024-03-14 06:00:01       19 阅读
  2. Selenium WebDriver 中用于查找网页元素的两个方法

    2024-03-14 06:00:01       19 阅读
  3. Redis 键管理和数据库管理命令详解

    2024-03-14 06:00:01       18 阅读
  4. 小程序自定义表格组件

    2024-03-14 06:00:01       19 阅读
  5. 机器学习模型—分类回归树(CART)

    2024-03-14 06:00:01       19 阅读
  6. Qt的多线程类

    2024-03-14 06:00:01       17 阅读
  7. 背包问题大合集--算法模板

    2024-03-14 06:00:01       23 阅读
  8. 安塔利斯升级php8

    2024-03-14 06:00:01       19 阅读