美文网首页
Android辅助功能

Android辅助功能

作者: yunhen | 来源:发表于2018-08-30 18:39 被阅读1次

相关文章1Api比较详细
相关文章2
AccessibilityService
在res下新建xml目录
xml目录里建立配置accessibilityservice.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:canRequestEnhancedWebAccessibility="true"
                       android:canRequestFilterKeyEvents="true"
                       android:canRequestTouchExplorationMode="true"
                       android:canRetrieveWindowContent="true"
                       android:description="@string/accessDescription"
                       android:notificationTimeout="100"
                       android:packageNames="com.tencent.mm"
                       android:settingsActivity=""
                       android:summary="" />

manifest.xml下

<service android:name=".accessibity.WeChatAuto"
                 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/第二个辅助功能配置方式的文件,存放在xml下"/>
        </service>

往一个EditText里添加文字

public boolean chatSendEditInput(String text) {
        if (TextUtils.isEmpty(text)) return false;
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        List<AccessibilityNodeInfo> chatSendEditList = accNodeInfo.findAccessibilityNodeInfosByViewId(chatSendEditId);
        AccessibilityNodeInfo chatSendEditNode = null;
        if (null != chatSendEditList && chatSendEditList.size() != 0) {
            chatSendEditNode = chatSendEditList.get(0);
        }
        if ("android.widget.EditText".equals(chatSendEditNode.getClassName())) {
               Bundle arguments = new Bundle();
                arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
                        text);
            return chatSendEditNode.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT,
                    arguments);
        }
        return false;
    }

手势模拟点击

相关文章https://www.jianshu.com/p/405f74ed000b

android7.0(N) 以上才可以
xml里配置属性:
android:canPerformGestures="true"

java方法:

public static void useGestureClick(AccessibilityNodeInfo info, AccessibilityService accessibilityService) {

        if (info == null) {
            return;
        }

        Rect rect = new Rect();
        info.getBoundsInScreen(rect);
        GestureDescription.Builder builder = new GestureDescription.Builder();
        Path path = new Path();
        path.moveTo(rect.centerX(), rect.centerY());
        GestureDescription gestureDescription = builder
                .addStroke(new GestureDescription.StrokeDescription(path, 100, 50))
                .build();
        accessibilityService.dispatchGesture(gestureDescription, new AccessibilityService.GestureResultCallback() {
            @Override
            public void onCompleted(GestureDescription gestureDescription) {
                super.onCompleted(gestureDescription);
            }
        }, null);
    }

相关文章

网友评论

      本文标题:Android辅助功能

      本文链接:https://www.haomeiwen.com/subject/usvdwftx.html