diff --git a/app/src/main/java/io/github/lsposed/manager/Constants.java b/app/src/main/java/io/github/lsposed/manager/Constants.java
index 5dbdc699..867bad30 100644
--- a/app/src/main/java/io/github/lsposed/manager/Constants.java
+++ b/app/src/main/java/io/github/lsposed/manager/Constants.java
@@ -36,6 +36,10 @@ public class Constants {
return App.getInstance().getApplicationInfo().deviceProtectedDataDir + "/";
}
+ public static boolean isPermissive() {
+ return true;
+ }
+
public static void showErrorToast(int type) {
Toast.makeText(App.getInstance(), R.string.app_destroyed, Toast.LENGTH_LONG).show();
}
diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java
index 4baa4a35..427b0555 100644
--- a/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java
+++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/MainActivity.java
@@ -64,13 +64,19 @@ public class MainActivity extends BaseActivity {
String installedXposedVersion = Constants.getXposedVersion();
if (installedXposedVersion != null) {
binding.statusTitle.setText(String.format(Locale.US, "%s %s", getString(R.string.Activated), Constants.getXposedVariant()));
- binding.statusSummary.setText(String.format(Locale.US, "%s (%d)", installedXposedVersion, Constants.getXposedVersionCode()));
- binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.download_status_update_available));
- binding.statusIcon.setImageResource(R.drawable.ic_check_circle);
+ if (!Constants.isPermissive()) {
+ binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorNormal));
+ binding.statusIcon.setImageResource(R.drawable.ic_check_circle);
+ binding.statusSummary.setText(String.format(Locale.US, "%s (%d)", installedXposedVersion, Constants.getXposedVersionCode()));
+ } else {
+ binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorError));
+ binding.statusIcon.setImageResource(R.drawable.ic_warning);
+ binding.statusSummary.setText(R.string.selinux_permissive_summary);
+ }
} else {
binding.statusTitle.setText(R.string.Install);
binding.statusSummary.setText(R.string.InstallDetail);
- binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary));
+ binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorInstall));
binding.statusIcon.setImageResource(R.drawable.ic_error);
}
}
diff --git a/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java b/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java
index 3b709a48..fe9cfb22 100644
--- a/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java
+++ b/app/src/main/java/io/github/lsposed/manager/ui/activity/ModulesActivity.java
@@ -18,7 +18,6 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.SearchView;
-import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.RecyclerView;
@@ -276,7 +275,6 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
descriptionText.setText(item.getDescription());
} else {
descriptionText.setText(getString(R.string.module_empty_description));
- descriptionText.setTextColor(ContextCompat.getColor(ModulesActivity.this, R.color.warning));
}
TextView warningText = holder.warningText;
diff --git a/app/src/main/java/io/github/lsposed/manager/ui/fragment/StatusDialogBuilder.java b/app/src/main/java/io/github/lsposed/manager/ui/fragment/StatusDialogBuilder.java
index b3f1a559..c825dd71 100644
--- a/app/src/main/java/io/github/lsposed/manager/ui/fragment/StatusDialogBuilder.java
+++ b/app/src/main/java/io/github/lsposed/manager/ui/fragment/StatusDialogBuilder.java
@@ -3,11 +3,11 @@ package io.github.lsposed.manager.ui.fragment;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
-import android.util.Log;
import android.view.LayoutInflater;
+import android.view.View;
import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
+import androidx.core.text.HtmlCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -15,11 +15,9 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
-import java.lang.reflect.Method;
import java.util.Locale;
import dalvik.system.VMRuntime;
-import io.github.lsposed.manager.App;
import io.github.lsposed.manager.BuildConfig;
import io.github.lsposed.manager.Constants;
import io.github.lsposed.manager.R;
@@ -62,7 +60,10 @@ public class StatusDialogBuilder extends MaterialAlertDialogBuilder {
binding.manufacturer.setText(getUIFramework());
binding.cpu.setText(getCompleteArch());
- determineVerifiedBootState(binding);
+ if (Constants.isPermissive()) {
+ binding.selinux.setVisibility(View.VISIBLE);
+ binding.selinux.setText(HtmlCompat.fromHtml(context.getString(R.string.selinux_permissive), HtmlCompat.FROM_HTML_MODE_LEGACY));
+ }
setView(binding.getRoot());
}
@@ -106,39 +107,6 @@ public class StatusDialogBuilder extends MaterialAlertDialogBuilder {
}
}
- private void determineVerifiedBootState(StatusInstallerBinding binding) {
- try {
- @SuppressLint("PrivateApi") Class> c = Class.forName("android.os.SystemProperties");
- Method m = c.getDeclaredMethod("get", String.class, String.class);
- m.setAccessible(true);
-
- String propSystemVerified = (String) m.invoke(null, "partition.system.verified", "0");
- String propState = (String) m.invoke(null, "ro.boot.verifiedbootstate", "");
- File fileDmVerityModule = new File("/sys/module/dm_verity");
-
- boolean verified = false;
- if (propSystemVerified != null) {
- verified = !propSystemVerified.equals("0");
- }
- boolean detected = false;
- if (propState != null) {
- detected = !propState.isEmpty() || fileDmVerityModule.exists();
- }
-
- if (verified) {
- binding.dmverity.setText(R.string.verified_boot_active);
- binding.dmverity.setTextColor(ContextCompat.getColor(getContext(), R.color.warning));
- } else if (detected) {
- binding.dmverity.setText(R.string.verified_boot_deactivated);
- } else {
- binding.dmverity.setText(R.string.verified_boot_none);
- binding.dmverity.setTextColor(ContextCompat.getColor(getContext(), R.color.warning));
- }
- } catch (Exception e) {
- Log.e(App.TAG, "Could not detect Verified Boot state", e);
- }
- }
-
private String getAndroidVersion() {
switch (Build.VERSION.SDK_INT) {
case 26:
diff --git a/app/src/main/res/drawable/ic_verified.xml b/app/src/main/res/drawable/ic_verified.xml
deleted file mode 100644
index 97b7632e..00000000
--- a/app/src/main/res/drawable/ic_verified.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/app/src/main/res/layout/activity_crash_report.xml b/app/src/main/res/layout/activity_crash_report.xml
index c7eca616..8d73f08a 100644
--- a/app/src/main/res/layout/activity_crash_report.xml
+++ b/app/src/main/res/layout/activity_crash_report.xml
@@ -18,7 +18,7 @@
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:orientation="horizontal"
- app:cardBackgroundColor="@color/amber_500">
+ app:cardBackgroundColor="@color/material_amber_500">
+ android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 6b6b9163..24558a19 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -5,4 +5,7 @@
#2E2E2E
#383838
#B3000000
+ @color/material_red_700
+ @color/material_green_700
+ @color/material_blue_700
\ No newline at end of file
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index dbb112f5..5042e655 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -32,7 +32,6 @@
%s 已安装, 但尚未激活
(未提供介绍)
该模块未提供用户界面
- LSPosed 模块列表已更新
LSPosed 模块已更新
该模块需要更新版本的 LSPosed(%d), 因此无法被激活
该模块未指定所需的 LSPosed 版本
@@ -86,10 +85,6 @@
取消优化
清除中…
优化中…
- LSPosed 框架未安装
- 引导验证已启用
- 引导验证已禁用
- 无法获取引导验证状态
完成!
禁用详细日志
@@ -137,4 +132,6 @@
由于未选择任何应用,模块 %s 已被禁用。
系统框架
此应用程序已被损坏,请确保您从官方来源下载该应用程序。
+ <b>警告:<\/b>SELinux 未处于严格模式!对此进行攻击的恶意程序可以完全控制你的设备,并可能造成你的财产损失和法律责任。
+ SELinux 未处于严格模式!
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index 4b60a4fe..770f3f61 100644
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -32,7 +32,6 @@
%s 已安裝, 但尚未激活
(未提供介紹)
該模塊未提供用户界面
- LSPosed 模塊列表已更新
LSPosed 模塊已更新
該模塊需要更新版本的 LSPosed(%d), 因此無法被激活
該模塊未指定所需的 LSPosed 版本
@@ -85,10 +84,6 @@
取消優化
清除中…
優化中…
- LSPosed 框架未安裝
- 引導驗證已啟用
- 引導驗證已禁用
- 無法獲取引導驗證狀態
完成!
禁用詳細日誌
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 68c09c63..724a1146 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -32,7 +32,6 @@
%s 已安裝, 但尚未啟用
(未提供介紹)
該模組未提供使用者介面
- LSPosed 模組列表已更新
LSPosed 模組已更新
該模組需要更新版本的 LSPosed(%d), 因此無法被啟用
該模組未指定所需的 LSPosed 版本
@@ -85,10 +84,6 @@
取消優化
清除中…
優化中…
- LSPosed 框架未安裝
- 引導驗證已啟用
- 引導驗證已禁用
- 無法獲取引導驗證狀態
完成!
禁用詳細日誌
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 524f4f65..820b1388 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -5,10 +5,9 @@
#dddddd
#e91e63
#F0F0F0
- #F44336
- @color/red_500
- #4CAF50
- #FFC107
@color/colorPrimary
@android:color/black
+ @color/material_red_500
+ @color/material_green_500
+ @color/material_blue_500
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9aacca07..2917aeef 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -33,7 +33,6 @@
%s has been installed, but is not activated yet
(no description provided)
This module does not provide a user interface
- LSPosed module list was updated
LSPosed module updated
This module requires a newer LSPosed version (%d) and thus cannot be activated
This module does not specify the LSPosed version it needs.
@@ -88,9 +87,6 @@
This is the LSPosed Framework and modules log\nif you need a Android logcat, you can try our Log Catcher Magisk module
Done!
- Verified Boot is deactivated
- Could not detect Verified Boot state
- Verified Boot is active
De-optimize
@@ -100,7 +96,6 @@
https://github.com/LSPosed/LSPosed/
http://t.me/LSPosed
- The LSPosed framework is not installed.
Disable verbose logs
Cannot read log: \n
@@ -144,4 +139,6 @@
Module %s has been disabled since no app selected.
System Framework
This application has been destroyed, please make sure you download it from the official source.
+ <b>WARNING:<\/b> SELinux is not enforcing! the malicious program that attacks this can completely control your device and may cause your property damage and legal liability.
+ SELinux is not enforcing!