mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-27 03:27:42 +00:00
Migrate to JobIntentService to prevent boot notification
This commit is contained in:
parent
07140d33a7
commit
6263d684d9
@ -66,7 +66,10 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<service android:name=".services.OnBootIntentService" />
|
<service
|
||||||
|
android:name=".services.OnBootService"
|
||||||
|
android:exported="true"
|
||||||
|
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||||
<service
|
<service
|
||||||
android:name=".services.UpdateCheckService"
|
android:name=".services.UpdateCheckService"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
@ -3,19 +3,16 @@ package com.topjohnwu.magisk.receivers;
|
|||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.topjohnwu.magisk.services.OnBootIntentService;
|
import com.topjohnwu.magisk.services.OnBootService;
|
||||||
|
|
||||||
public class BootReceiver extends BroadcastReceiver {
|
public class BootReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (TextUtils.equals(intent.getAction(), Intent.ACTION_BOOT_COMPLETED))
|
||||||
context.startForegroundService(new Intent(context, OnBootIntentService.class));
|
OnBootService.enqueueWork(context);
|
||||||
} else {
|
|
||||||
context.startService(new Intent(context, OnBootIntentService.class));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
package com.topjohnwu.magisk.services;
|
|
||||||
|
|
||||||
import android.app.IntentService;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.support.v4.app.NotificationCompat;
|
|
||||||
|
|
||||||
import com.topjohnwu.magisk.MagiskManager;
|
|
||||||
import com.topjohnwu.magisk.R;
|
|
||||||
import com.topjohnwu.magisk.utils.Const;
|
|
||||||
import com.topjohnwu.magisk.utils.RootUtils;
|
|
||||||
|
|
||||||
public class OnBootIntentService extends IntentService {
|
|
||||||
|
|
||||||
public OnBootIntentService() {
|
|
||||||
super("OnBootIntentService");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate() {
|
|
||||||
super.onCreate();
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
startForeground(Const.ID.ONBOOT_NOTIFICATION_ID,
|
|
||||||
new NotificationCompat.Builder(this, Const.ID.NOTIFICATION_CHANNEL)
|
|
||||||
.setSmallIcon(R.drawable.ic_magisk_outline)
|
|
||||||
.setContentTitle("Startup Operations")
|
|
||||||
.setContentText("Running startup operations...")
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onHandleIntent(Intent intent) {
|
|
||||||
/* Pixel 2 (XL) devices will need to patch dtbo.img.
|
|
||||||
* However, that is not possible if Magisk is installed by
|
|
||||||
* patching boot image with Magisk Manager and fastboot flash
|
|
||||||
* the boot image, since at that time we do not have root.
|
|
||||||
* Check for dtbo status every boot time, and prompt user
|
|
||||||
* to reboot if dtbo wasn't patched and patched by Magisk Manager.
|
|
||||||
* */
|
|
||||||
MagiskManager.get().loadMagiskInfo();
|
|
||||||
RootUtils.patchDTBO();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.topjohnwu.magisk.services;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v4.app.JobIntentService;
|
||||||
|
|
||||||
|
import com.topjohnwu.magisk.utils.Const;
|
||||||
|
import com.topjohnwu.magisk.utils.ShowUI;
|
||||||
|
import com.topjohnwu.superuser.Shell;
|
||||||
|
import com.topjohnwu.superuser.ShellUtils;
|
||||||
|
|
||||||
|
public class OnBootService extends JobIntentService {
|
||||||
|
|
||||||
|
public static void enqueueWork(Context context) {
|
||||||
|
enqueueWork(context, OnBootService.class, Const.ID.ONBOOT_SERVICE_ID, new Intent());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onHandleWork(@NonNull Intent intent) {
|
||||||
|
/* Devices with DTBO might want to patch dtbo.img.
|
||||||
|
* However, that is not possible if Magisk is installed by
|
||||||
|
* patching boot image with Magisk Manager and flashed via
|
||||||
|
* fastboot, since at that time we do not have root.
|
||||||
|
* Check for dtbo status every boot time, and prompt user
|
||||||
|
* to reboot if dtbo wasn't patched and patched by Magisk Manager.
|
||||||
|
* */
|
||||||
|
Shell shell = Shell.newInstance();
|
||||||
|
if (shell.getStatus() >= Shell.ROOT_SHELL &&
|
||||||
|
Boolean.parseBoolean(ShellUtils.fastCmd(shell, "mm_patch_dtbo")))
|
||||||
|
ShowUI.dtboPatchedNotification();
|
||||||
|
}
|
||||||
|
}
|
@ -4,8 +4,6 @@ import android.util.Log;
|
|||||||
|
|
||||||
import com.topjohnwu.magisk.BuildConfig;
|
import com.topjohnwu.magisk.BuildConfig;
|
||||||
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
public class Logger {
|
public class Logger {
|
||||||
|
|
||||||
public static void debug(String line) {
|
public static void debug(String line) {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.topjohnwu.magisk.utils;
|
package com.topjohnwu.magisk.utils;
|
||||||
|
|
||||||
import com.topjohnwu.magisk.MagiskManager;
|
|
||||||
import com.topjohnwu.superuser.Shell;
|
import com.topjohnwu.superuser.Shell;
|
||||||
import com.topjohnwu.superuser.ShellUtils;
|
|
||||||
import com.topjohnwu.superuser.io.SuFile;
|
import com.topjohnwu.superuser.io.SuFile;
|
||||||
|
|
||||||
public class RootUtils {
|
public class RootUtils {
|
||||||
@ -25,14 +23,4 @@ public class RootUtils {
|
|||||||
public static void uninstallPkg(String pkg) {
|
public static void uninstallPkg(String pkg) {
|
||||||
Shell.Sync.su("db_clean " + Const.USER_ID, "pm uninstall " + pkg);
|
Shell.Sync.su("db_clean " + Const.USER_ID, "pm uninstall " + pkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void patchDTBO() {
|
|
||||||
if (Shell.rootAccess()) {
|
|
||||||
MagiskManager mm = MagiskManager.get();
|
|
||||||
if (mm.magiskVersionCode >= Const.MAGISK_VER.DTBO_SUPPORT) {
|
|
||||||
if (Boolean.parseBoolean(ShellUtils.fastCmd("mm_patch_dtbo")))
|
|
||||||
ShowUI.dtboPatchedNotification();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,6 @@ public class Const {
|
|||||||
public static final int FBE_AWARE = 1410;
|
public static final int FBE_AWARE = 1410;
|
||||||
public static final int RESETPROP_PERSIST = 1436;
|
public static final int RESETPROP_PERSIST = 1436;
|
||||||
public static final int MANAGER_HIDE = 1440;
|
public static final int MANAGER_HIDE = 1440;
|
||||||
public static final int DTBO_SUPPORT = 1446;
|
|
||||||
public static final int HIDDEN_PATH = 1460;
|
public static final int HIDDEN_PATH = 1460;
|
||||||
public static final int REMOVE_LEGACY_LINK = 1630;
|
public static final int REMOVE_LEGACY_LINK = 1630;
|
||||||
public static final int SEPOL_REFACTOR = 1640;
|
public static final int SEPOL_REFACTOR = 1640;
|
||||||
@ -70,11 +69,11 @@ public class Const {
|
|||||||
public static final int UPDATE_SERVICE_ID = 1;
|
public static final int UPDATE_SERVICE_ID = 1;
|
||||||
public static final int FETCH_ZIP = 2;
|
public static final int FETCH_ZIP = 2;
|
||||||
public static final int SELECT_BOOT = 3;
|
public static final int SELECT_BOOT = 3;
|
||||||
|
public static final int ONBOOT_SERVICE_ID = 6;
|
||||||
|
|
||||||
// notifications
|
// notifications
|
||||||
public static final int MAGISK_UPDATE_NOTIFICATION_ID = 4;
|
public static final int MAGISK_UPDATE_NOTIFICATION_ID = 4;
|
||||||
public static final int APK_UPDATE_NOTIFICATION_ID = 5;
|
public static final int APK_UPDATE_NOTIFICATION_ID = 5;
|
||||||
public static final int ONBOOT_NOTIFICATION_ID = 6;
|
|
||||||
public static final int DTBO_NOTIFICATION_ID = 7;
|
public static final int DTBO_NOTIFICATION_ID = 7;
|
||||||
public static final String NOTIFICATION_CHANNEL = "magisk_notification";
|
public static final String NOTIFICATION_CHANNEL = "magisk_notification";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user