mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-12-22 19:16:16 +00:00
76 lines
2.9 KiB
Java
76 lines
2.9 KiB
Java
package com.topjohnwu.magisk.receivers;
|
|
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
|
|
import com.topjohnwu.magisk.Const;
|
|
import com.topjohnwu.magisk.Data;
|
|
import com.topjohnwu.magisk.MagiskManager;
|
|
import com.topjohnwu.magisk.SuRequestActivity;
|
|
import com.topjohnwu.magisk.services.OnBootService;
|
|
import com.topjohnwu.magisk.utils.DlInstallManager;
|
|
import com.topjohnwu.magisk.utils.SuConnector;
|
|
import com.topjohnwu.superuser.Shell;
|
|
|
|
public class GeneralReceiver extends BroadcastReceiver {
|
|
|
|
private String getPkg(Intent i) {
|
|
return i.getData() == null ? "" : i.getData().getEncodedSchemeSpecificPart();
|
|
}
|
|
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
MagiskManager mm = Data.MM();
|
|
if (intent == null)
|
|
return;
|
|
String action = intent.getAction();
|
|
if (action == null)
|
|
return;
|
|
switch (action) {
|
|
case Intent.ACTION_BOOT_COMPLETED:
|
|
String bootAction = intent.getStringExtra("action");
|
|
if (bootAction == null)
|
|
bootAction = "boot";
|
|
switch (bootAction) {
|
|
case "request":
|
|
Intent i = new Intent(mm, Data.classMap.get(SuRequestActivity.class))
|
|
.putExtra("socket", intent.getStringExtra("socket"))
|
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
mm.startActivity(i);
|
|
break;
|
|
case "log":
|
|
SuConnector.handleLogs(intent);
|
|
break;
|
|
case "notify":
|
|
SuConnector.handleNotify(intent);
|
|
break;
|
|
case "boot":
|
|
default:
|
|
/* The actual on-boot trigger */
|
|
OnBootService.enqueueWork(mm);
|
|
break;
|
|
}
|
|
break;
|
|
case Intent.ACTION_PACKAGE_REPLACED:
|
|
// This will only work pre-O
|
|
if (mm.prefs.getBoolean(Const.Key.SU_REAUTH, false)) {
|
|
mm.mDB.deletePolicy(getPkg(intent));
|
|
}
|
|
break;
|
|
case Intent.ACTION_PACKAGE_FULLY_REMOVED:
|
|
String pkg = getPkg(intent);
|
|
mm.mDB.deletePolicy(pkg);
|
|
Shell.su("magiskhide --rm " + pkg).submit();
|
|
break;
|
|
case Const.Key.BROADCAST_MANAGER_UPDATE:
|
|
Data.managerLink = intent.getStringExtra(Const.Key.INTENT_SET_LINK);
|
|
DlInstallManager.upgrade(intent.getStringExtra(Const.Key.INTENT_SET_NAME));
|
|
break;
|
|
case Const.Key.BROADCAST_REBOOT:
|
|
Shell.su("/system/bin/reboot").submit();
|
|
break;
|
|
}
|
|
}
|
|
}
|