fix android 13+ secret_code (#2455)

see
https://developer.android.google.cn/reference/android/content/Context#RECEIVER_NOT_EXPORTED

---------

Co-authored-by: LoveSy <shana@zju.edu.cn>
This commit is contained in:
浅秋枫影 2023-03-23 03:10:42 +08:00 committed by GitHub
parent ece5fe3f98
commit 677ee95b2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 4 deletions

View File

@ -308,7 +308,7 @@ public class LSPosedService extends ILSPosedService.Stub {
LSPNotificationManager.cancelNotification(SCOPE_CHANNEL_ID, packageName, userId); LSPNotificationManager.cancelNotification(SCOPE_CHANNEL_ID, packageName, userId);
} }
private void registerReceiver(List<IntentFilter> filters, String requiredPermission, int userId, Consumer<Intent> task) { private void registerReceiver(List<IntentFilter> filters, String requiredPermission, int userId, Consumer<Intent> task, int flag) {
var receiver = new IIntentReceiver.Stub() { var receiver = new IIntentReceiver.Stub() {
@Override @Override
public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
@ -329,15 +329,23 @@ public class LSPosedService extends ILSPosedService.Stub {
}; };
try { try {
for (var filter : filters) { for (var filter : filters) {
ActivityManagerService.registerReceiver("android", null, receiver, filter, requiredPermission, userId, Context.RECEIVER_NOT_EXPORTED); ActivityManagerService.registerReceiver("android", null, receiver, filter, requiredPermission, userId, flag);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "register receiver", e); Log.e(TAG, "register receiver", e);
} }
} }
private void registerReceiver(List<IntentFilter> filters, String requiredPermission, int userId, Consumer<Intent> task) {
registerReceiver(filters, requiredPermission, userId, task, Context.RECEIVER_NOT_EXPORTED);
}
private void registerReceiver(List<IntentFilter> filters, int userId, Consumer<Intent> task) { private void registerReceiver(List<IntentFilter> filters, int userId, Consumer<Intent> task) {
registerReceiver(filters, null, userId, task); registerReceiver(filters, null, userId, task, Context.RECEIVER_NOT_EXPORTED);
}
private void registerReceiver(List<IntentFilter> filters, int userId, Consumer<Intent> task, int flag) {
registerReceiver(filters, null, userId, task, flag);
} }
private void registerPackageReceiver() { private void registerPackageReceiver() {
@ -371,7 +379,7 @@ public class LSPosedService extends ILSPosedService.Stub {
intentFilter.addDataAuthority("5776733", null); intentFilter.addDataAuthority("5776733", null);
intentFilter.addDataScheme("android_secret_code"); intentFilter.addDataScheme("android_secret_code");
registerReceiver(List.of(intentFilter), 0, this::dispatchSecretCodeReceive); registerReceiver(List.of(intentFilter), 0, this::dispatchSecretCodeReceive, Context.RECEIVER_EXPORTED);
Log.d(TAG, "registered secret code receiver"); Log.d(TAG, "registered secret code receiver");
} }