Androidで自動クリックを実装する方法

AndroidのAccessibilityServiceを使用することで、自動クリックを実現できます。AccessibilityServiceはシステムレベルのサービスであり、アプリケーションのインターフェース情報を取得して、ユーザーのクリック操作をシミュレートできます。

簡単なサンプルコードを示します。このコードでは、指定されたアプリで指定されたコントロールを自動でクリックします。

  1. AccessibilityServiceの継承クラスAccessibilityServiceを作成し、onAccessibilityEventメソッドをオーバーライドする
public class AutoClickService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        // 获取当前窗口的根节点
        AccessibilityNodeInfo rootNode = getRootInActiveWindow();
        if (rootNode == null) {
            return;
        }
        
        // 在rootNode中查找需要点击的控件,并调用performAction方法模拟点击
        List<AccessibilityNodeInfo> nodes = rootNode.findAccessibilityNodeInfosByText("点击按钮");
        for (AccessibilityNodeInfo node : nodes) {
            node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
        }
    }

    @Override
    public void onInterrupt() {
        
    }
}
  1. AndroidManifest.xmlファイルでAccessibilityServiceを宣言する
<service
    android:name=".AutoClickService"
    android:label="@string/app_name"
    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/accessibility_service_config" />
</service>
  1. accessibility_service_config.xmlファイルを作成し、監視する必要があるアプリケーションのパッケージ名を指定します。
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
    android:canPerformGestures="true"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_description"
    android:packageNames="com.example.app" />

android:packageNamesは、監視するアプリケーションのパッケージ名を指定する。

  1. アプリの設定画面で、そのアクセシビリティサービスを有効にするようユーザーを誘導する:
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);

ユーザはアクセシビリティサービスを手動で有効にして、設定のアプリケーション名を選択する必要があります。そうすると、アプリケーションは指定されたコントロールをリッスンして自動的にクリックできます。

アクセシビリティサービスを用いて自動クリックを行う際は、プライバシーとセキュリティ上のリスクが発生する可能性があることに留意し、該当する法令に従うとともに、ユーザーのプライバシー権保護に関する規定を理解したうえでご利用ください。

bannerAds