Skip to content

Commit d9ade72

Browse files
committed
fix(SystemUI): fix "restart_recovery" and "restart_download" fail when no background process
1 parent d8870c5 commit d9ade72

6 files changed

Lines changed: 31 additions & 39 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,12 @@
5858
<action android:name="android.service.quicksettings.action.QS_TILE" />
5959
</intent-filter>
6060
</service>
61-
<receiver
62-
android:name=".RebootReceiver"
61+
<activity
62+
android:name=".RebootActivity"
63+
android:excludeFromRecents="true"
6364
android:exported="true"
64-
android:permission="android.permission.STATUS_BAR_SERVICE" />
65+
android:permission="android.permission.STATUS_BAR_SERVICE"
66+
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
6567
</application>
6668

6769
</manifest>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.github.soclear.oneuix
2+
3+
import android.app.Activity
4+
import android.os.Bundle
5+
6+
class RebootActivity : Activity() {
7+
override fun onCreate(savedInstanceState: Bundle?) {
8+
super.onCreate(savedInstanceState)
9+
intent.action?.let {
10+
Runtime.getRuntime().exec("su -c reboot $it")
11+
}
12+
finish()
13+
}
14+
}

app/src/main/java/io/github/soclear/oneuix/RebootReceiver.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

app/src/main/java/io/github/soclear/oneuix/data/RebootRequest.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.

app/src/main/java/io/github/soclear/oneuix/hook/systemui/powermenu/RestartDownloadActionViewModel.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.soclear.oneuix.hook.systemui.powermenu
22

33
import android.app.AndroidAppHelper
4-
import android.content.ComponentName
54
import android.content.Intent
65
import android.os.Handler
76
import android.os.Looper
@@ -11,8 +10,8 @@ import com.samsung.android.globalactions.presentation.viewmodel.ActionViewModel
1110
import com.samsung.android.globalactions.presentation.viewmodel.ViewType
1211
import io.github.soclear.oneuix.BuildConfig
1312
import io.github.soclear.oneuix.R
13+
import io.github.soclear.oneuix.RebootActivity
1414
import io.github.soclear.oneuix.data.PowerMenuAction
15-
import io.github.soclear.oneuix.data.RebootRequest
1615

1716
class RestartDownloadActionViewModel(
1817
private val globalActions: SamsungGlobalActions,
@@ -35,10 +34,11 @@ class RestartDownloadActionViewModel(
3534

3635
globalActions.dismissDialog(false)
3736
Handler(Looper.getMainLooper()).postDelayed({
38-
val intent = Intent(RebootRequest.ACTION)
39-
.setComponent(ComponentName(BuildConfig.APPLICATION_ID, "${BuildConfig.APPLICATION_ID}.RebootReceiver"))
40-
.putExtra(RebootRequest.EXTRA_REASON, RebootRequest.DOWNLOAD)
41-
AndroidAppHelper.currentApplication().sendBroadcast(intent)
37+
val intent = Intent("download").apply {
38+
setClassName(BuildConfig.APPLICATION_ID, RebootActivity::class.java.name)
39+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
40+
}
41+
AndroidAppHelper.currentApplication().startActivity(intent)
4242
}, 100L)
4343
}
4444

app/src/main/java/io/github/soclear/oneuix/hook/systemui/powermenu/RestartRecoveryActionViewModel.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.soclear.oneuix.hook.systemui.powermenu
22

33
import android.app.AndroidAppHelper
4-
import android.content.ComponentName
54
import android.content.Intent
65
import android.os.Handler
76
import android.os.Looper
@@ -11,8 +10,8 @@ import com.samsung.android.globalactions.presentation.viewmodel.ActionViewModel
1110
import com.samsung.android.globalactions.presentation.viewmodel.ViewType
1211
import io.github.soclear.oneuix.BuildConfig
1312
import io.github.soclear.oneuix.R
13+
import io.github.soclear.oneuix.RebootActivity
1414
import io.github.soclear.oneuix.data.PowerMenuAction
15-
import io.github.soclear.oneuix.data.RebootRequest
1615

1716
class RestartRecoveryActionViewModel(
1817
private val globalActions: SamsungGlobalActions,
@@ -35,10 +34,11 @@ class RestartRecoveryActionViewModel(
3534

3635
globalActions.dismissDialog(false)
3736
Handler(Looper.getMainLooper()).postDelayed({
38-
val intent = Intent(RebootRequest.ACTION)
39-
.setComponent(ComponentName(BuildConfig.APPLICATION_ID, "${BuildConfig.APPLICATION_ID}.RebootReceiver"))
40-
.putExtra(RebootRequest.EXTRA_REASON, RebootRequest.RECOVERY)
41-
AndroidAppHelper.currentApplication().sendBroadcast(intent)
37+
val intent = Intent("recovery").apply {
38+
setClassName(BuildConfig.APPLICATION_ID, RebootActivity::class.java.name)
39+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
40+
}
41+
AndroidAppHelper.currentApplication().startActivity(intent)
4242
}, 100L)
4343
}
4444

0 commit comments

Comments
 (0)