mirror of
https://github.com/fankes/MIUINativeNotifyIcon.git
synced 2025-09-04 17:55:34 +08:00
将 su 命令更换为 Magisk 的开源库 libsu
This commit is contained in:
@@ -45,6 +45,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'de.robv.android.xposed:api:82'
|
compileOnly 'de.robv.android.xposed:api:82'
|
||||||
|
implementation "com.github.topjohnwu.libsu:core:3.1.2"
|
||||||
// 基础依赖包
|
// 基础依赖包
|
||||||
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
|
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
|
||||||
// Fragment 快速实现
|
// Fragment 快速实现
|
||||||
|
@@ -208,9 +208,9 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
/** 重启系统界面 */
|
/** 重启系统界面 */
|
||||||
private fun restartSystemUI() =
|
private fun restartSystemUI() =
|
||||||
execShellCmd(cmd = "pgrep systemui").also { pid ->
|
execShellSu(cmd = "pgrep systemui").also { pid ->
|
||||||
if (pid.isNotBlank())
|
if (pid.isNotBlank())
|
||||||
execShellCmd(cmd = "kill -9 $pid")
|
execShellSu(cmd = "kill -9 $pid")
|
||||||
else Toast.makeText(this, "ROOT 权限获取失败", Toast.LENGTH_SHORT).show()
|
else Toast.makeText(this, "ROOT 权限获取失败", Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,8 +33,7 @@ import android.provider.Settings
|
|||||||
import android.service.notification.StatusBarNotification
|
import android.service.notification.StatusBarNotification
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import com.fankes.miui.notify.application.MNNApplication.Companion.appContext
|
import com.fankes.miui.notify.application.MNNApplication.Companion.appContext
|
||||||
import java.io.DataInputStream
|
import com.topjohnwu.superuser.Shell
|
||||||
import java.io.DataOutputStream
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统深色模式是否开启
|
* 系统深色模式是否开启
|
||||||
@@ -268,28 +267,10 @@ fun findPropString(key: String, default: String = "") =
|
|||||||
* @param cmd 命令
|
* @param cmd 命令
|
||||||
* @return [String] 执行结果
|
* @return [String] 执行结果
|
||||||
*/
|
*/
|
||||||
fun execShellCmd(cmd: String): String {
|
fun execShellSu(cmd: String) = try {
|
||||||
var result = ""
|
Shell.su(cmd).exec().out.let {
|
||||||
var dos: DataOutputStream? = null
|
if (it.isNotEmpty()) it[0].trim() else ""
|
||||||
var dis: DataInputStream? = null
|
|
||||||
try {
|
|
||||||
val p = Runtime.getRuntime().exec("su")
|
|
||||||
dos = DataOutputStream(p.outputStream)
|
|
||||||
dis = DataInputStream(p.inputStream)
|
|
||||||
dos.writeBytes("$cmd\n")
|
|
||||||
dos.flush()
|
|
||||||
dos.writeBytes("exit\n")
|
|
||||||
dos.flush()
|
|
||||||
var line: String
|
|
||||||
while (dis.readLine().also { line = it } != null) result += line
|
|
||||||
p.waitFor()
|
|
||||||
} catch (_: Exception) {
|
|
||||||
} finally {
|
|
||||||
try {
|
|
||||||
dos?.close()
|
|
||||||
dis?.close()
|
|
||||||
} catch (_: Exception) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result.trim()
|
} catch (_: Throwable) {
|
||||||
|
""
|
||||||
}
|
}
|
Reference in New Issue
Block a user