Support Android 14 DP2 (#2434)

close #2433 

But the notification cannot send broadcast now.
This commit is contained in:
LoveSy 2023-03-09 12:28:34 +08:00 committed by GitHub
parent d09b2fe44e
commit 7087c6f752
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 8 deletions

View File

@ -254,7 +254,7 @@ public class App extends Application {
} }
} }
} }
}, intentFilter); }, intentFilter, Context.RECEIVER_NOT_EXPORTED);
UpdateUtil.loadRemoteVersion(); UpdateUtil.loadRemoteVersion();

View File

@ -48,9 +48,14 @@ public class ActivityController extends IActivityController.Stub {
try { try {
myActivityControllerConstructor = myActivityControllerClass.getDeclaredConstructor(IActivityManager.class, PrintWriter.class, InputStream.class, myActivityControllerConstructor = myActivityControllerClass.getDeclaredConstructor(IActivityManager.class, PrintWriter.class, InputStream.class,
String.class, boolean.class); String.class, boolean.class);
} catch (NoSuchMethodException ignored) { } catch (NoSuchMethodException e1) {
try {
myActivityControllerConstructor = myActivityControllerClass.getDeclaredConstructor(IActivityManager.class, PrintWriter.class, InputStream.class, myActivityControllerConstructor = myActivityControllerClass.getDeclaredConstructor(IActivityManager.class, PrintWriter.class, InputStream.class,
String.class, boolean.class, boolean.class, String.class, boolean.class); String.class, boolean.class, boolean.class, String.class, boolean.class);
} catch (NoSuchMethodException e2) {
myActivityControllerConstructor = myActivityControllerClass.getDeclaredConstructor(IActivityManager.class, PrintWriter.class, InputStream.class,
String.class, boolean.class, boolean.class, String.class, boolean.class, boolean.class);
}
} }
myActivityControllerConstructor.setAccessible(true); myActivityControllerConstructor.setAccessible(true);
myActivityControllerRunner = myActivityControllerClass.getDeclaredMethod("run"); myActivityControllerRunner = myActivityControllerClass.getDeclaredMethod("run");
@ -99,12 +104,13 @@ public class ActivityController extends IActivityController.Stub {
boolean simpleMode = false; boolean simpleMode = false;
String target = null; String target = null;
boolean alwaysContinue = false; boolean alwaysContinue = false;
boolean alwaysKill = false;
while ((opt = getNextOption()) != null) { while ((opt = getNextOption()) != null) {
if (opt.equals("--gdb")) { if (opt.equals("--gdb")) {
gdbPort = getNextArgRequired(); gdbPort = getNextArgRequired();
} else if (opt.equals("-m")) { } else if (opt.equals("-m")) {
monkey = true; monkey = true;
} else if (myActivityControllerConstructor.getParameterCount() > 5) { } else if (myActivityControllerConstructor.getParameterCount() == 8) {
switch (opt) { switch (opt) {
case "-p": case "-p":
target = getNextArgRequired(); target = getNextArgRequired();
@ -116,13 +122,19 @@ public class ActivityController extends IActivityController.Stub {
alwaysContinue = true; alwaysContinue = true;
break; break;
} }
} else if (myActivityControllerConstructor.getParameterCount() > 8) {
switch (opt) {
case "-k":
alwaysKill = true;
break;
}
} else { } else {
getErrPrintWriter().println("Error: Unknown option: " + opt); getErrPrintWriter().println("Error: Unknown option: " + opt);
return -1; return -1;
} }
} }
return replaceMyControllerActivity(pw, getRawInputStream(), gdbPort, monkey, simpleMode, target, alwaysContinue); return replaceMyControllerActivity(pw, getRawInputStream(), gdbPort, monkey, simpleMode, target, alwaysContinue, alwaysKill);
} }
@Override @Override
@ -161,7 +173,7 @@ public class ActivityController extends IActivityController.Stub {
return false; return false;
} }
static private int replaceMyControllerActivity(PrintWriter pw, InputStream stream, String gdbPort, boolean monkey, boolean simpleMode, String target, boolean alwaysContinue) { static private int replaceMyControllerActivity(PrintWriter pw, InputStream stream, String gdbPort, boolean monkey, boolean simpleMode, String target, boolean alwaysContinue, boolean alwaysKill) {
try { try {
InvocationHandler handler = (proxy, method, args1) -> { InvocationHandler handler = (proxy, method, args1) -> {
if (method.getName().equals("setActivityController")) { if (method.getName().equals("setActivityController")) {
@ -178,8 +190,10 @@ public class ActivityController extends IActivityController.Stub {
Object ctrl; Object ctrl;
if (myActivityControllerConstructor.getParameterCount() == 5) { if (myActivityControllerConstructor.getParameterCount() == 5) {
ctrl = myActivityControllerConstructor.newInstance(amProxy, pw, stream, gdbPort, monkey); ctrl = myActivityControllerConstructor.newInstance(amProxy, pw, stream, gdbPort, monkey);
} else { } else if (myActivityControllerConstructor.getParameterCount() == 8){
ctrl = myActivityControllerConstructor.newInstance(amProxy, pw, stream, gdbPort, monkey, simpleMode, target, alwaysContinue); ctrl = myActivityControllerConstructor.newInstance(amProxy, pw, stream, gdbPort, monkey, simpleMode, target, alwaysContinue);
} else {
ctrl = myActivityControllerConstructor.newInstance(amProxy, pw, stream, gdbPort, monkey, simpleMode, target, alwaysContinue, alwaysKill);
} }
myActivityControllerRunner.invoke(ctrl); myActivityControllerRunner.invoke(ctrl);
return 0; return 0;