[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 { try {
binder.linkToDeath(deathRecipient, 0); binder.linkToDeath(deathRecipient, 0);
am = IActivityManager.Stub.asInterface(binder); 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) { } catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(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"); 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 @Override
public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken, String api) { public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken, String api) {
Log.d(TAG, "received system context"); Log.d(TAG, "received system context");
@ -310,6 +339,7 @@ public class LSPosedService extends ILSPosedService.Stub {
registerUnlockReceiver(); registerUnlockReceiver();
registerConfigurationReceiver(); registerConfigurationReceiver();
registerSecretCodeReceiver(); registerSecretCodeReceiver();
registerBootCompleteReceiver();
} }
@Override @Override