导航菜单

页面标题

页面副标题

Tasker v6.5.11 - MyAccessibilityService.java 源代码

正在查看: Tasker v6.5.11 应用的 MyAccessibilityService.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package net.dinglisch.android.taskerm;

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.os.Parcelable;
import android.text.TextUtils;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.dinglisch.android.taskerm.yd;
import wd.f;

public class MyAccessibilityService extends AccessibilityService {
    public static String q = "MAS";
    private static Map<Integer, String> r;
    private static AccessibilityService s;
    private static int t;
    private static boolean u;
    private com.joaomgcd.taskerm.helper.c i = new com.joaomgcd.taskerm.helper.c(this);

    class a implements AccessibilityManager.AccessibilityStateChangeListener {
        final AccessibilityManager i;

        a(AccessibilityManager accessibilityManager) {
            this.i = accessibilityManager;
        }

        @Override
        public void onAccessibilityStateChanged(boolean z) {
            if (z) {
                return;
            }
            this.i.removeAccessibilityStateChangeListener(this);
            MyAccessibilityService.this.m();
        }
    }

    static {
        HashMap hashMap = new HashMap();
        r = hashMap;
        s = null;
        t = 0;
        u = false;
        hashMap.put(64, "NOTIFICATION_STATE_CHANGED");
        r.put(1, "VIEW_CLICKED");
        r.put(2, "VIEW_LONG_CLICKED");
        r.put(32, "WINDOW_STATE_CHANGED");
    }

    public static boolean a() {
        return true;
    }

    public static boolean b(int i, boolean z, String str) {
        if (!yd.a.a()) {
            r7.N(q, z, str + "no API");
        } else {
            if (j(i)) {
                return true;
            }
            r7.N(q, z, str + "unsupported");
        }
        return false;
    }

    public static boolean c(int i, boolean z, String str) {
        if (b(i, z, str)) {
            if (s != null) {
                return true;
            }
            r7.N(q, z, str + "no instance, accessibility service disabled ?");
        }
        return false;
    }

    public static String d(int i) {
        return r.containsKey(Integer.valueOf(i)) ? r.get(Integer.valueOf(i)) : "UNKNOWN";
    }

    private static AccessibilityManager e(Context context) {
        return (AccessibilityManager) oi.d(context, "accessibility", q, "getMan");
    }

    public static Intent f() {
        return new Intent("android.settings.ACCESSIBILITY_SETTINGS").addFlags(1073741824).addFlags(2097152);
    }

    private String g(Parcelable parcelable) {
        String str;
        if (parcelable != null) {
            try {
                r7.f(q, parcelable.toString());
            } catch (Exception e) {
                r7.f(q, e.toString());
                str = null;
            }
        }
        Notification notification = (Notification) parcelable;
        str = yd.h0.c() ? yd.h0.b(notification.contentIntent) : yd.h0.a(notification.contentIntent);
        if (str == null) {
            str = "";
        }
        if (TextUtils.isEmpty(str)) {
            r7.f(q, "getTargetPack: failed");
        }
        return str;
    }

    private String h(Parcelable parcelable, List<CharSequence> list) {
        String str;
        if (parcelable == null || !(parcelable instanceof Notification)) {
            str = null;
        } else {
            str = hg.z1.G((Notification) parcelable);
            r7.f(q, "use notification title directly for notification title cause p is notification ");
        }
        if (parcelable == null) {
            r7.f(q, "Can't use notification title directly cause p is null ");
        } else if (!(parcelable instanceof Notification)) {
            r7.f(q, "Can't use notification title directly cause p is not notification ");
        }
        if (TextUtils.isEmpty(str) && !dq.F(list)) {
            str = list.get(0).toString();
            r7.f(q, "use first text for notification title ");
        }
        if (TextUtils.isEmpty(str)) {
            r7.f(q, "no first text, try notification ticker");
            try {
                str = ((Notification) parcelable).tickerText.toString();
            } catch (Exception e) {
                r7.f(q, e.toString());
            }
        }
        if (str == null) {
            r7.f(q, "failed to get ticker text");
            return "";
        }
        r7.f(q, "got title: " + str);
        return str;
    }

    public static WindowManager i() {
        AccessibilityService accessibilityService = s;
        if (accessibilityService == null) {
            return null;
        }
        return (WindowManager) accessibilityService.getSystemService("window");
    }

    public static boolean j(int i) {
        return wd.c.j(i, dq.g());
    }

    public static boolean k(Context context) {
        return e(context) != null;
    }

    public static void l(Context context) {
    }

    public static boolean n(int i) {
        return o(i, true);
    }

    public static boolean o(int i, boolean z) {
        String str = "performGlobalAction: " + i + ": ";
        if (!com.joaomgcd.taskerm.helper.c.n0(s, i) && z) {
            r7.k(q, "Action " + i + " is not supported on this device or can't be performed right now");
        }
        if (c(i, true, str)) {
            if (yd.a.c(s, i)) {
                return true;
            }
            if (z) {
                r7.G(q, "performGlobalAction: failed");
            }
        }
        return false;
    }

    public static boolean p() {
        return s != null;
    }

    public static com.joaomgcd.taskerm.util.s6 q(Context context) {
        return p() ? new com.joaomgcd.taskerm.util.v6() : new com.joaomgcd.taskerm.util.t6("no permission to access accessibility");
    }

    public static void s(int i) {
        t = i;
        u(s, "sa");
    }

    public static void t(boolean z) {
        u = z;
        u(s, "sa");
    }

    @TargetApi(26)
    private static synchronized void u(AccessibilityService accessibilityService, String str) {
        synchronized (MyAccessibilityService.class) {
            try {
                if (accessibilityService == null) {
                    r7.f(q, "setInfo: " + str + ": no service");
                } else {
                    AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
                    int i = (u && com.joaomgcd.taskerm.util.k.r()) ? 513 : 1;
                    accessibilityServiceInfo.eventTypes = t;
                    accessibilityServiceInfo.flags = i;
                    accessibilityServiceInfo.feedbackType = 16;
                    accessibilityServiceInfo.packageNames = null;
                    accessibilityService.setServiceInfo(accessibilityServiceInfo);
                }
            } catch (Throwable th2) {
                throw th2;
            }
        }
    }

    public static void v(Activity activity) {
        dq.l3(activity, f());
    }

    protected void m() {
        pg.d.j(new f.b());
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
        int eventType = accessibilityEvent.getEventType();
        String y = dq.y(accessibilityEvent.getPackageName());
        String y2 = dq.y(accessibilityEvent.getClassName());
        if (ji.p(this, y, y2)) {
            List<CharSequence> text = accessibilityEvent.getText();
            if (eventType == 1 || eventType == 2) {
                if (eventType == 1 && (y2.equals("com.android.server.status.LatestItemView") || y2.equals("com.android.systemui.statusbar.LatestItemView") || (dq.g() >= 18 && "android.widget.FrameLayout".equals(y2) && "com.android.systemui".equals(y)))) {
                    Parcelable parcelableData = accessibilityEvent.getParcelableData();
                    String g = g(parcelableData);
                    r7.f(q, "xxx:targetpackage " + g);
                    if (!g.equals(getPackageName())) {
                        Intent intent = new Intent("net.dinglisch.android.tasker.NOTORUM");
                        intent.putExtra("title", h(parcelableData, text)).putExtra("pkg", g);
                        MonitorService.B9(this, intent, -1);
                    }
                }
                Intent intent2 = new Intent("net.dinglisch.android.tasker.ACCESSY");
                intent2.putExtra("acct", eventType).putExtra("cls", y2).putExtra("strgns", r(text)).putExtra("ckd", accessibilityEvent.isChecked());
                sendOrderedBroadcast(intent2, null);
                return;
            }
            if (eventType != 32) {
                if (eventType != 64) {
                    if (eventType != 4194304) {
                        return;
                    }
                    this.i.m0(accessibilityEvent);
                    return;
                } else {
                    if (ji.z()) {
                        return;
                    }
                    ji.t(this, y, y2, h(accessibilityEvent.getParcelableData(), text), null, null, null, null, null, true);
                    return;
                }
            }
            if (this.i.q0(accessibilityEvent)) {
                boolean isFullScreen = accessibilityEvent.isFullScreen();
                Intent putExtra = new Intent("net.dinglisch.android.tasker.NWINNY").putExtra("strgns", r(text)).putExtra("fscr", isFullScreen);
                putExtra.putExtra("pkg", accessibilityEvent.getPackageName()).putExtra("cls", accessibilityEvent.getClassName());
                this.i.i0("winsource: " + ((Object) accessibilityEvent.getPackageName()) + " / " + ((Object) accessibilityEvent.getClassName()) + "; fullscreen " + isFullScreen + "; enabled: " + accessibilityEvent.isEnabled());
                MonitorService.B9(this, putExtra, -1);
            }
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        this.i.I();
    }

    @Override
    public void onDestroy() {
        com.joaomgcd.taskerm.util.p.C(this, q);
        this.i.J();
        super.onDestroy();
    }

    @Override
    public void onInterrupt() {
        r7.f(q, "interrupt");
    }

    @Override
    public synchronized void onServiceConnected() {
        try {
            r7.f(q, "onServiceConnected");
            if (s != null) {
                r7.f(q, "onServiceConnected: hmm, already have an instance");
            }
            s = this;
            u(this, "osc");
            AccessibilityManager accessibilityManager = (AccessibilityManager) getSystemService("accessibility");
            accessibilityManager.addAccessibilityStateChangeListener(new a(accessibilityManager));
            this.i.o0();
            pg.d.j(new f.a());
        } catch (Throwable th2) {
            throw th2;
        }
    }

    @Override
    public synchronized boolean onUnbind(Intent intent) {
        try {
            r7.f(q, "unbind");
            if (s == null) {
                r7.G(q, "onUnbind: hmm, no instance");
            }
            s = null;
        } catch (Throwable th2) {
            throw th2;
        }
        return false;
    }

    public String[] r(List<CharSequence> list) {
        int i = 0;
        if (list == null) {
            return new String[0];
        }
        String[] strArr = new String[list.size()];
        Iterator<CharSequence> it = list.iterator();
        while (it.hasNext()) {
            CharSequence next = it.next();
            int i2 = i + 1;
            strArr[i] = next == null ? "" : next.toString();
            i = i2;
        }
        return strArr;
    }
}