导航菜单

页面标题

页面副标题

Tasker v6.6.3 - MyAccessibilityService.java 源代码

正在查看: Tasker v6.6.3 应用的 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.ud;
import wd.m;

public class MyAccessibilityService extends AccessibilityService implements xf.d7, ze.e {
    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.g i = new com.joaomgcd.taskerm.helper.g(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.n();
        }
    }

    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 (!ud.a.a()) {
            o7.N(q, z, str + "no API");
        } else {
            if (k(i)) {
                return true;
            }
            o7.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;
            }
            o7.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) gi.d(context, "accessibility", q, "getMan");
    }

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

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

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

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

    public static boolean k(int i) {
        return wd.e.l(i, pp.g());
    }

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

    public static void m(Context context) {
    }

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

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

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

    public static com.joaomgcd.taskerm.util.pe r(Context context) {
        return q() ? new com.joaomgcd.taskerm.util.ue() : new com.joaomgcd.taskerm.util.se("no permission to access accessibility");
    }

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

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

    @TargetApi(26)
    private static synchronized void v(AccessibilityService accessibilityService, String str) {
        synchronized (MyAccessibilityService.class) {
            try {
                if (accessibilityService == null) {
                    o7.f(q, "setInfo: " + str + ": no service");
                } else {
                    AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
                    int i = (u && com.joaomgcd.taskerm.util.r.s()) ? 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 w(Activity activity) {
        pp.l3(activity, f());
    }

    public uk.n0 getCoroutineScope() {
        return super.getCoroutineScope();
    }

    @Override
    public com.joaomgcd.taskerm.helper.j getHelper() {
        return this.i;
    }

    protected void n() {
        xg.h.m(new m.b());
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
        int eventType = accessibilityEvent.getEventType();
        String y = pp.y(accessibilityEvent.getPackageName());
        String y2 = pp.y(accessibilityEvent.getClassName());
        if (bi.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") || (pp.g() >= 18 && "android.widget.FrameLayout".equals(y2) && "com.android.systemui".equals(y)))) {
                    Parcelable parcelableData = accessibilityEvent.getParcelableData();
                    String h = h(parcelableData);
                    o7.f(q, "xxx:targetpackage " + h);
                    if (!h.equals(getPackageName())) {
                        Intent intent = new Intent("net.dinglisch.android.tasker.NOTORUM");
                        intent.putExtra("title", i(parcelableData, text)).putExtra("pkg", h);
                        MonitorService.E9(this, intent, -1);
                    }
                }
                Intent intent2 = new Intent("net.dinglisch.android.tasker.ACCESSY");
                intent2.putExtra("acct", eventType).putExtra("cls", y2).putExtra("strgns", s(text)).putExtra("ckd", accessibilityEvent.isChecked());
                sendOrderedBroadcast(intent2, null);
                return;
            }
            if (eventType != 32) {
                if (eventType != 64) {
                    if (eventType != 4194304) {
                        return;
                    }
                    this.i.R0(accessibilityEvent);
                    return;
                } else {
                    if (bi.z()) {
                        return;
                    }
                    bi.t(this, y, y2, i(accessibilityEvent.getParcelableData(), text), null, null, null, null, null, true);
                    return;
                }
            }
            if (this.i.Z0(accessibilityEvent)) {
                boolean isFullScreen = accessibilityEvent.isFullScreen();
                Intent putExtra = new Intent("net.dinglisch.android.tasker.NWINNY").putExtra("strgns", s(text)).putExtra("fscr", isFullScreen);
                putExtra.putExtra("pkg", accessibilityEvent.getPackageName()).putExtra("cls", accessibilityEvent.getClassName());
                this.i.J0("winsource: " + ((Object) accessibilityEvent.getPackageName()) + " / " + ((Object) accessibilityEvent.getClassName()) + "; fullscreen " + isFullScreen + "; enabled: " + accessibilityEvent.isEnabled());
                MonitorService.E9(this, putExtra, -1);
            }
        }
    }

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

    @Override
    public void onDestroy() {
        com.joaomgcd.taskerm.util.c0.O(this, q);
        this.i.h0();
        super.onDestroy();
    }

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

    @Override
    public synchronized void onServiceConnected() {
        try {
            o7.f(q, "onServiceConnected");
            if (s != null) {
                o7.f(q, "onServiceConnected: hmm, already have an instance");
            }
            s = this;
            v(this, "osc");
            AccessibilityManager accessibilityManager = (AccessibilityManager) getSystemService("accessibility");
            accessibilityManager.addAccessibilityStateChangeListener(new a(accessibilityManager));
            this.i.X0();
            xg.h.m(new m.a());
        } catch (Throwable th2) {
            throw th2;
        }
    }

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

    public String[] s(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;
    }
}