[core] Move `setActivityController` to boot complete (#1387)

For oddo Android 9, if activityController is set too earilier, it
crashes system server. So move the set latter
This commit is contained in:
LoveSy 2021-11-11 17:34:28 +08:00 committed by GitHub
parent ccab9b8a1f
commit 8ebdcd55b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 1 deletions

View File

@ -63,7 +63,8 @@ public class ActivityManagerService {
try {
binder.linkToDeath(deathRecipient, 0);
am = IActivityManager.Stub.asInterface(binder);
am.setActivityController(null, false);
// For oddo Android 9 we cannot set activity controller here...
// am.setActivityController(null, false);
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(e));
}

View File

@ -301,6 +301,35 @@ public class LSPosedService extends ILSPosedService.Stub {
Log.d(TAG, "registered secret code receiver");
}
private void registerBootCompleteReceiver() {
try {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_LOCKED_BOOT_COMPLETED);
ActivityManagerService.registerReceiver("android", null, new IIntentReceiver.Stub() {
@Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
new Thread(() -> {
try {
var am = ActivityManagerService.getActivityManager();
if (am != null) am.setActivityController(null, false);
} catch (Throwable e) {
Log.e(TAG, "setActivityController", e);
}
}).start();
try {
ActivityManagerService.finishReceiver(this, resultCode, data, extras, false, intent.getFlags());
} catch (Throwable e) {
Log.e(TAG, "finish receiver", e);
}
}
}, intentFilter, null, 0, 0);
} catch (Throwable e) {
Log.e(TAG, "register boot receiver", e);
}
Log.d(TAG, "registered boot receiver");
}
@Override
public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken, String api) {
Log.d(TAG, "received system context");
@ -310,6 +339,7 @@ public class LSPosedService extends ILSPosedService.Stub {
registerUnlockReceiver();
registerConfigurationReceiver();
registerSecretCodeReceiver();
registerBootCompleteReceiver();
}
@Override