正在查看: Tasker v6.6.3 应用的 MyAccessibilityService.java JAVA 源代码文件
本页面展示 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;
}
}