Commit 2760f37e authored by vvb2060's avatar vvb2060 Committed by John Wu

Add userspace reboot

parent 3fa34260
package com.topjohnwu.magisk.events package com.topjohnwu.magisk.events
import android.os.Build
import android.os.PowerManager
import android.view.ContextThemeWrapper import android.view.ContextThemeWrapper
import android.view.MenuItem import android.view.MenuItem
import android.widget.PopupMenu import android.widget.PopupMenu
import androidx.core.content.getSystemService
import com.topjohnwu.magisk.R import com.topjohnwu.magisk.R
import com.topjohnwu.magisk.core.base.BaseActivity import com.topjohnwu.magisk.core.base.BaseActivity
import com.topjohnwu.superuser.Shell import com.topjohnwu.superuser.Shell
...@@ -13,6 +16,7 @@ object RebootEvent { ...@@ -13,6 +16,7 @@ object RebootEvent {
private fun reboot(item: MenuItem): Boolean { private fun reboot(item: MenuItem): Boolean {
when (item.itemId) { when (item.itemId) {
R.id.action_reboot_normal -> systemReboot() R.id.action_reboot_normal -> systemReboot()
R.id.action_reboot_userspace -> systemReboot("userspace")
R.id.action_reboot_bootloader -> systemReboot("bootloader") R.id.action_reboot_bootloader -> systemReboot("bootloader")
R.id.action_reboot_download -> systemReboot("download") R.id.action_reboot_download -> systemReboot("download")
R.id.action_reboot_edl -> systemReboot("edl") R.id.action_reboot_edl -> systemReboot("edl")
...@@ -25,6 +29,9 @@ object RebootEvent { ...@@ -25,6 +29,9 @@ object RebootEvent {
fun inflateMenu(activity: BaseActivity): PopupMenu { fun inflateMenu(activity: BaseActivity): PopupMenu {
val themeWrapper = ContextThemeWrapper(activity, R.style.Foundation_PopupMenu) val themeWrapper = ContextThemeWrapper(activity, R.style.Foundation_PopupMenu)
val menu = PopupMenu(themeWrapper, activity.findViewById(R.id.action_reboot)) val menu = PopupMenu(themeWrapper, activity.findViewById(R.id.action_reboot))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R &&
activity.getSystemService<PowerManager>()?.isRebootingUserspaceSupported == true)
menu.menu.getItem(R.id.action_reboot_userspace).isVisible = true
activity.menuInflater.inflate(R.menu.menu_reboot, menu.menu) activity.menuInflater.inflate(R.menu.menu_reboot, menu.menu)
menu.setOnMenuItemClickListener(::reboot) menu.setOnMenuItemClickListener(::reboot)
return menu return menu
......
...@@ -5,6 +5,15 @@ ...@@ -5,6 +5,15 @@
android:id="@+id/action_reboot_normal" android:id="@+id/action_reboot_normal"
android:title="@string/reboot" /> android:title="@string/reboot" />
<item
android:id="@+id/action_reboot_userspace"
android:title="@string/reboot_userspace"
android:visible="false" />
<item
android:id="@+id/action_reboot_recovery"
android:title="@string/reboot_recovery" />
<item <item
android:id="@+id/action_reboot_bootloader" android:id="@+id/action_reboot_bootloader"
android:title="@string/reboot_bootloader" /> android:title="@string/reboot_bootloader" />
...@@ -17,8 +26,4 @@ ...@@ -17,8 +26,4 @@
android:id="@+id/action_reboot_edl" android:id="@+id/action_reboot_edl"
android:title="@string/reboot_edl" /> android:title="@string/reboot_edl" />
<item
android:id="@+id/action_reboot_recovery"
android:title="@string/reboot_recovery" />
</menu> </menu>
\ No newline at end of file
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
<!--Module --> <!--Module -->
<string name="no_info_provided">(No info provided)</string> <string name="no_info_provided">(No info provided)</string>
<string name="reboot_userspace">Soft reboot</string>
<string name="reboot_recovery">Reboot to Recovery</string> <string name="reboot_recovery">Reboot to Recovery</string>
<string name="reboot_bootloader">Reboot to Bootloader</string> <string name="reboot_bootloader">Reboot to Bootloader</string>
<string name="reboot_download">Reboot to Download</string> <string name="reboot_download">Reboot to Download</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment