Better tips for framework not installed (#62)

* Remove skip min version check

* Better tips for framework not installed

* Disable framework settings if not installed
This commit is contained in:
tehcneko 2021-02-03 22:03:33 +08:00 committed by GitHub
parent 8b69bdd30d
commit 94a1ba826e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 79 additions and 124 deletions

View File

@ -3,10 +3,12 @@ package io.github.lsposed.manager.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.core.content.ContextCompat;
import com.bumptech.glide.Glide;
import com.google.android.material.snackbar.Snackbar;
import java.util.Locale;
@ -28,11 +30,6 @@ public class MainActivity extends BaseActivity {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.modules.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), ModulesActivity.class);
startActivity(intent);
});
binding.status.setOnClickListener(v -> {
if (Constants.getXposedVersionCode() != -1) {
new StatusDialogBuilder(this)
@ -43,21 +40,10 @@ public class MainActivity extends BaseActivity {
NavUtil.startURL(this, getString(R.string.about_source));
}
});
binding.settings.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), SettingsActivity.class);
startActivity(intent);
});
binding.logs.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), LogsActivity.class);
startActivity(intent);
});
binding.about.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setClass(getApplicationContext(), AboutActivity.class);
startActivity(intent);
});
binding.modules.setOnClickListener(new StartActivityListener(ModulesActivity.class, true));
binding.logs.setOnClickListener(new StartActivityListener(LogsActivity.class, true));
binding.settings.setOnClickListener(new StartActivityListener(SettingsActivity.class, false));
binding.about.setOnClickListener(new StartActivityListener(AboutActivity.class, false));
Glide.with(binding.appIcon)
.load(GlideHelper.wrapApplicationInfoForIconLoader(getApplicationInfo()))
.into(binding.appIcon);
@ -78,6 +64,28 @@ public class MainActivity extends BaseActivity {
binding.statusSummary.setText(R.string.InstallDetail);
binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.colorInstall));
binding.statusIcon.setImageResource(R.drawable.ic_error);
Snackbar.make(binding.snackbar, R.string.lsposed_not_active, Snackbar.LENGTH_LONG).show();
}
}
private class StartActivityListener implements View.OnClickListener {
boolean requireInstalled;
Class<?> clazz;
StartActivityListener(Class<?> clazz, boolean requireInstalled) {
this.clazz = clazz;
this.requireInstalled = requireInstalled;
}
@Override
public void onClick(View v) {
if (requireInstalled && Constants.getXposedVersion() == null) {
Snackbar.make(binding.snackbar, R.string.lsposed_not_active, Snackbar.LENGTH_LONG).show();
} else {
Intent intent = new Intent();
intent.setClass(MainActivity.this, clazz);
startActivity(intent);
}
}
}

View File

@ -3,9 +3,16 @@ package io.github.lsposed.manager.ui.activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Typeface;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.text.style.TypefaceSpan;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@ -18,6 +25,7 @@ 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;
@ -42,7 +50,6 @@ import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleListener {
ActivityAppListBinding binding;
private int installedXposedVersion;
private ApplicationFilter filter;
private SearchView searchView;
private SearchView.OnQueryTextListener mSearchListener;
@ -105,14 +112,6 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
filter = new ApplicationFilter();
moduleUtil = ModuleUtil.getInstance();
pm = getPackageManager();
installedXposedVersion = Constants.getXposedApiVersion();
if (installedXposedVersion <= 0) {
Snackbar.make(binding.snackbar, R.string.xposed_not_active, Snackbar.LENGTH_LONG).setAction(R.string.Settings, v -> {
Intent intent = new Intent();
intent.setClass(ModulesActivity.this, SettingsActivity.class);
startActivity(intent);
}).show();
}
adapter = new ModuleAdapter();
adapter.setHasStableIds(true);
moduleUtil.addListener(this);
@ -269,33 +268,38 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
.load(item.getPackageInfo())
.into(holder.appIcon);
TextView descriptionText = holder.appDescription;
descriptionText.setVisibility(View.VISIBLE);
SpannableStringBuilder sb = new SpannableStringBuilder();
if (!item.getDescription().isEmpty()) {
descriptionText.setText(item.getDescription());
sb.append(item.getDescription());
} else {
descriptionText.setText(getString(R.string.module_empty_description));
sb.append(getString(R.string.module_empty_description));
}
TextView warningText = holder.warningText;
int installedXposedVersion = Constants.getXposedApiVersion();
String warningText = null;
if (item.minVersion == 0) {
warningText.setText(getString(R.string.no_min_version_specified));
warningText.setVisibility(View.VISIBLE);
warningText = getString(R.string.no_min_version_specified);
} else if (installedXposedVersion > 0 && item.minVersion > installedXposedVersion) {
warningText.setText(String.format(getString(R.string.warning_xposed_min_version), item.minVersion));
warningText.setVisibility(View.VISIBLE);
warningText = String.format(getString(R.string.warning_xposed_min_version), item.minVersion);
} else if (item.minVersion < ModuleUtil.MIN_MODULE_VERSION) {
warningText.setText(String.format(getString(R.string.warning_min_version_too_low), item.minVersion, ModuleUtil.MIN_MODULE_VERSION));
warningText.setVisibility(View.VISIBLE);
warningText = String.format(getString(R.string.warning_min_version_too_low), item.minVersion, ModuleUtil.MIN_MODULE_VERSION);
} else if (item.isInstalledOnExternalStorage()) {
warningText.setText(getString(R.string.warning_installed_on_external_storage));
warningText.setVisibility(View.VISIBLE);
} else if (installedXposedVersion == 0 || (installedXposedVersion == -1)) {
warningText.setText(getString(R.string.not_installed_no_lollipop));
warningText.setVisibility(View.VISIBLE);
} else {
warningText.setVisibility(View.GONE);
warningText = getString(R.string.warning_installed_on_external_storage);
}
if (warningText != null) {
sb.append("\n");
sb.append(warningText);
final ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(ContextCompat.getColor(ModulesActivity.this, R.color.material_red_500));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
final TypefaceSpan typefaceSpan = new TypefaceSpan(Typeface.create("sans-serif-medium", Typeface.NORMAL));
sb.setSpan(typefaceSpan, sb.length() - warningText.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
} else {
final StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
sb.setSpan(styleSpan, sb.length() - warningText.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
sb.setSpan(foregroundColorSpan, sb.length() - warningText.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
holder.appDescription.setText(sb);
}
void addAll(ArrayList<ModuleUtil.InstalledModule> items) {

View File

@ -22,6 +22,7 @@ import androidx.preference.Preference;
import androidx.preference.SwitchPreferenceCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.snackbar.Snackbar;
import com.takisoft.preferencex.PreferenceFragmentCompat;
import com.takisoft.preferencex.SimpleMenuPreference;
@ -80,6 +81,9 @@ public class SettingsActivity extends BaseActivity {
return insets;
});
}
if (Constants.getXposedVersion() == null) {
Snackbar.make(binding.snackbar, R.string.lsposed_not_active, Snackbar.LENGTH_LONG).show();
}
}
private void restart() {
@ -127,20 +131,24 @@ public class SettingsActivity extends BaseActivity {
public void onCreatePreferencesFix(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.prefs);
boolean installed = Constants.getXposedVersion() != null;
SwitchPreferenceCompat prefVerboseLogs = findPreference("disable_verbose_log");
if (prefVerboseLogs != null) {
prefVerboseLogs.setEnabled(installed);
prefVerboseLogs.setChecked(Files.exists(disableVerboseLogsFlag));
prefVerboseLogs.setOnPreferenceChangeListener(new OnFlagChangeListener(disableVerboseLogsFlag));
}
SwitchPreferenceCompat prefModulesLogs = findPreference("disable_modules_log");
if (prefModulesLogs != null) {
prefModulesLogs.setEnabled(installed);
prefModulesLogs.setChecked(Files.exists(disableModulesLogsFlag));
prefModulesLogs.setOnPreferenceChangeListener(new OnFlagChangeListener(disableModulesLogsFlag));
}
SwitchPreferenceCompat prefEnableResources = findPreference("enable_resources");
if (prefEnableResources != null) {
prefEnableResources.setEnabled(installed);
prefEnableResources.setChecked(Files.exists(enableResourcesFlag));
prefEnableResources.setOnPreferenceChangeListener(new OnFlagChangeListener(enableResourcesFlag));
}
@ -150,6 +158,7 @@ public class SettingsActivity extends BaseActivity {
if (StatusDialogBuilder.getArch().contains("x86") || requireActivity().getApplicationInfo().uid / 100000 != 0) {
prefVariant.setVisible(false);
} else {
prefVariant.setEnabled(installed);
try {
prefVariant.setValue(new String(Files.readAllBytes(variantFlag)).trim());
} catch (Exception e) {

View File

@ -1,6 +1,5 @@
package io.github.lsposed.manager.util;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@ -33,12 +32,10 @@ public final class ModuleUtil {
private Map<String, InstalledModule> installedModules;
private final List<String> enabledModules;
private boolean isReloading = false;
private final SharedPreferences prefs;
private ModuleUtil() {
pm = App.getInstance().getPackageManager();
enabledModules = AppHelper.getEnabledModuleList();
prefs = App.getPreferences();
}
public static synchronized ModuleUtil getInstance() {
@ -226,18 +223,13 @@ public final class ModuleUtil {
this.minVersion = 0;
this.description = "";
} else {
int version = Constants.getXposedApiVersion();
if (version > 0 && prefs.getBoolean("skip_xposedminversion_check", false)) {
this.minVersion = version;
Object minVersionRaw = app.metaData.get("xposedminversion");
if (minVersionRaw instanceof Integer) {
this.minVersion = (Integer) minVersionRaw;
} else if (minVersionRaw instanceof String) {
this.minVersion = extractIntPart((String) minVersionRaw);
} else {
Object minVersionRaw = app.metaData.get("xposedminversion");
if (minVersionRaw instanceof Integer) {
this.minVersion = (Integer) minVersionRaw;
} else if (minVersionRaw instanceof String) {
this.minVersion = extractIntPart((String) minVersionRaw);
} else {
this.minVersion = 0;
}
this.minVersion = 0;
}
}
}

View File

@ -74,7 +74,6 @@
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_centerVertical="true"
android:contentDescription="@string/Activated"
app:srcCompat="@drawable/ic_check_circle"
app:tint="@android:color/white" />
@ -84,7 +83,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="25dp"
android:layout_toEndOf="@id/status_icon"
android:text="@string/Activated"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/white" />
@ -95,7 +93,6 @@
android:layout_below="@id/status_title"
android:layout_alignStart="@id/status_title"
android:layout_marginTop="5dp"
android:text="@string/ActivatedDetail"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@android:color/white" />
</RelativeLayout>

View File

@ -85,18 +85,5 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/warning"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="8dp"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/material_red_500"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@+id/description"
app:layout_constraintTop_toBottomOf="@+id/description"
tools:text="@tools:sample/lorem" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

View File

@ -4,7 +4,6 @@
<item
android:id="@+id/menu_search"
android:title="@string/menuSearch"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom" />

View File

@ -4,7 +4,6 @@
<item
android:id="@+id/menu_search"
android:title="@string/menuSearch"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom" />
</menu>

View File

@ -3,7 +3,6 @@
<string name="Activated">已激活</string>
<string name="Install">安装</string>
<string name="InstallDetail">点按安装 LSPosed</string>
<string name="ActivatedDetail">LSPosed 框架已激活</string>
<string name="Modules">模块</string>
<string name="ModulesDetail">%d 模块已启用</string>
<string name="Logs">日志</string>
@ -22,7 +21,6 @@
<string name="nav_item_logs_err">模块日志</string>
<!-- Installer tab -->
<string name="areyousure">您确定?</string>
<string name="install_warning_title">请小心!</string>
<string name="dont_show_again">不再提示</string>
@ -42,12 +40,10 @@
<string name="module_uninstall">卸载</string>
<!-- Download tab -->
<string name="menuSearch">搜索</string>
<string name="menuReload">重新加载</string>
<!-- Settings tab -->
<string name="settings_group_framework">框架</string>
<string name="settings_group_app">应用</string>
<string name="settings_theme">主题</string>
<string name="settings_theme_light">亮色</string>
<string name="settings_theme_dark">暗色</string>
@ -73,13 +69,10 @@
<string name="warning_installed_on_external_storage">此模块因被安装在 SD 卡中而导致无法加载, 请将其移动到内部存储</string>
<string name="info">信息</string>
<string name="not_installed_no_lollipop">LSPosed 框架未安装</string>
<string name="scroll_top">滚动到顶部</string>
<string name="loading">正在加载…</string>
<string name="scroll_bottom">滚动到底部</string>
<string name="skip_xposedminversion_check">关闭状态检查</string>
<string name="skip_xposedminversion_check_summ">关闭针对模块的\“LSPosed 安装状态\”检查</string>
<string name="not_logcat">此处仅显示 LSPosed 及模块相关日志信息\n如果您想抓取系统日志, 可以尝试我们的 Log Catcher Magisk 模块</string>
<!-- LSPd related -->
@ -95,9 +88,7 @@
<string name="pref_title_disable_modules_log">禁用模块日志</string>
<string name="pref_disable_modules_log_summary">模块抛出的的异常堆栈仍将正常抓取</string>
<string name="follow_system">跟随系统</string>
<string name="pure_black_dark_theme">使用纯黑深色主题</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安装或未激活, 您可在设置中关闭状态检查</string>
<string name="pure_black_dark_theme">使用纯黑深色主题</string>
<string name="transparent_status_bar">透明状态栏</string>
<string name="sort_by_name">应用名称</string>
<string name="sort_by_name_reverse">应用名称(降序)</string>
@ -135,4 +126,5 @@
<string name="selinux_permissive">&lt;b&gt;警告:&lt;\/b&gt;SELinux 未处于严格模式!对此进行攻击的恶意程序可以完全控制你的设备,并可能造成你的财产损失和法律责任。</string>
<string name="selinux_permissive_summary">SELinux 未处于严格模式!</string>
<string name="outdated_manager">LSPosed Manager 和 LSPosed Core 的版本不一致。请重新安装对应的版本。</string>
<string name="lsposed_not_active">LSPosed 未安装或未激活</string>
</resources>

View File

@ -3,7 +3,6 @@
<string name="Activated">已激活</string>
<string name="Install">安裝</string>
<string name="InstallDetail">點按安裝 LSPosed</string>
<string name="ActivatedDetail">LSPosed 框架已激活</string>
<string name="Modules">模塊</string>
<string name="ModulesDetail">%d 模塊已啟用</string>
<string name="Logs">日誌</string>
@ -21,7 +20,6 @@
<string name="nav_item_logs_err">模塊日誌</string>
<!-- Installer tab -->
<string name="areyousure">您確定?</string>
<string name="install_warning_title">請小心!</string>
<string name="dont_show_again">不再提示</string>
@ -41,12 +39,10 @@
<string name="module_uninstall">卸載</string>
<!-- Download tab -->
<string name="menuSearch">搜索</string>
<string name="menuReload">重新加載</string>
<!-- Settings tab -->
<string name="settings_group_framework">框架</string>
<string name="settings_group_app">應用</string>
<string name="settings_theme">主題</string>
<string name="settings_theme_light">亮色</string>
<string name="settings_theme_dark">暗色</string>
@ -71,13 +67,10 @@
<string name="warning_installed_on_external_storage">此模塊因被安裝在 SD 卡中而導致無法加載, 請將其移動到內部存儲</string>
<string name="info">信息</string>
<string name="not_installed_no_lollipop">LSPosed 框架未安裝</string>
<string name="scroll_top">滾動到頂部</string>
<string name="loading">正在加載…</string>
<string name="scroll_bottom">滾動到底部</string>
<string name="skip_xposedminversion_check">關閉狀態檢查</string>
<string name="skip_xposedminversion_check_summ">關閉針對模塊的\"LSPosed 安裝狀態\"檢查</string>
<string name="not_logcat">此處僅顯示 LSPosed 及模塊相關日誌信息\n如果您想抓取系統日誌, 可以嘗試我們的 Log Catcher Magisk 模塊</string>
<!-- LSPd related -->
@ -93,8 +86,8 @@
<string name="pref_disable_modules_log_summary">模塊拋出的的異常堆棧仍將正常抓取</string>
<string name="follow_system">跟隨系統</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安裝或未激活, 您可在設置中關閉狀態檢查</string>
<string name="transparent_status_bar">透明狀態欄</string>
<string name="sort_by_name">應用名稱</string>
<string name="sort_by_name_reverse">應用名稱(降序)</string>

View File

@ -3,7 +3,6 @@
<string name="Activated">已啟用</string>
<string name="Install">安裝</string>
<string name="InstallDetail">點按安裝 LSPosed</string>
<string name="ActivatedDetail">LSPosed 框架已啟用</string>
<string name="Modules">模組</string>
<string name="ModulesDetail">%d 模組已啟用</string>
<string name="Logs">日誌</string>
@ -22,7 +21,6 @@
<string name="nav_item_logs_err">模組日誌</string>
<!-- Installer tab -->
<string name="areyousure">您確定?</string>
<string name="install_warning_title">請小心!</string>
<string name="dont_show_again">不再提示</string>
@ -42,12 +40,10 @@
<string name="module_uninstall">解除安裝</string>
<!-- Download tab -->
<string name="menuSearch">搜尋</string>
<string name="menuReload">重新載入</string>
<!-- Settings tab -->
<string name="settings_group_framework">框架</string>
<string name="settings_group_app">程式</string>
<string name="settings_theme">主題</string>
<string name="settings_theme_light">亮色</string>
<string name="settings_theme_dark">暗色</string>
@ -73,13 +69,10 @@
<string name="warning_installed_on_external_storage">此模組因被安裝在 SD 卡中而導致無法載入, 請將其移動到內部儲存</string>
<string name="info">資訊</string>
<string name="not_installed_no_lollipop">LSPosed 框架未安裝</string>
<string name="scroll_top">滾動到頂部</string>
<string name="loading">正在載入…</string>
<string name="scroll_bottom">滾動到底部</string>
<string name="skip_xposedminversion_check">關閉狀態檢查</string>
<string name="skip_xposedminversion_check_summ">關閉針對模組的\"LSPosed 安裝狀態\"檢查</string>
<string name="not_logcat">此處僅顯示 LSPosed 及模組相關日誌資訊\n如果您想抓取系統日誌, 可以嘗試我們的 Log Catcher Magisk 模組</string>
<!-- LSPd related -->
@ -96,8 +89,8 @@
<string name="pref_disable_modules_log_summary">模組丟擲的的異常堆疊仍將正常抓取</string>
<string name="follow_system">跟隨系統</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安裝或未啟用, 您可在設定中關閉狀態檢查</string>
<string name="transparent_status_bar">透明狀態列</string>
<string name="sort_by_name">程式名稱</string>
<string name="sort_by_name_reverse">程式名稱(降序)</string>

View File

@ -3,7 +3,6 @@
<string name="Activated">Activated</string>
<string name="Install">Install</string>
<string name="InstallDetail">Tap to install LSPosed</string>
<string name="ActivatedDetail">LSPosed is activated</string>
<string name="Modules">Modules</string>
<string name="ModulesDetail">%d modules enabled</string>
<string name="Logs">Logs</string>
@ -23,7 +22,6 @@
<string name="nav_item_logs_err">Modules Logs</string>
<!-- Installer tab -->
<string name="areyousure">Are you sure?</string>
<string name="install_warning_title">Be careful!</string>
<string name="dont_show_again">Don\'t show this again</string>
@ -43,14 +41,12 @@
<string name="module_uninstall">Uninstall</string>
<!-- Download tab -->
<string name="menuSearch">Search</string>
<string name="menuReload">Reload</string>
<!-- Settings tab -->
<string name="settings_group_framework">Framework</string>
<string name="settings_enable_resources">Enable resource hooks</string>
<string name="settings_enable_resources_summary"><b>WARNING:</b> Resource hooks are deprecated</string>
<string name="settings_group_app">Application</string>
<string name="settings_theme">Theme</string>
<string name="settings_theme_light">Light</string>
<string name="settings_theme_dark">Dark</string>
@ -76,13 +72,10 @@
<string name="warning_installed_on_external_storage">This module cannot be loaded because it\'s installed on the SD card, please move it to internal storage</string>
<string name="info">Info</string>
<string name="not_installed_no_lollipop">LSPosed Framework is not installed</string>
<string name="scroll_top">Scroll to top</string>
<string name="loading">Loading…</string>
<string name="scroll_bottom">Scroll to bottom</string>
<string name="skip_xposedminversion_check">Skip status check</string>
<string name="skip_xposedminversion_check_summ">Skip \"LSPosed Status\" check for modules</string>
<string name="android_sdk" translatable="false">Android %2$s (%1$s, API %3$d)</string>
<string name="not_logcat">This is the LSPosed Framework and modules log\nif you need a Android logcat, you can try our Log Catcher Magisk module</string>
@ -106,7 +99,6 @@
<string name="pref_disable_modules_log_summary">Exception stack thrown by the module will still be catched normally</string>
<string name="pure_black_dark_theme">Use the pure black dark theme</string>
<string name="follow_system">Follow system</string>
<string name="xposed_not_active">LSPosed Framework is not currently installed or active\nYou can close status check in settings</string>
<string name="transparent_status_bar">Transparent status bar</string>
<string name="sort_by_name">Sort by application name</string>
<string name="sort_by_name_reverse">Sort by application name (reverse)</string>
@ -142,4 +134,5 @@
<string name="selinux_permissive">&lt;b&gt;WARNING:&lt;\/b&gt; SELinux is not enforcing! the malicious program that attacks this can completely control your device and may cause your property damage and legal liability.</string>
<string name="selinux_permissive_summary">SELinux is not enforcing!</string>
<string name="outdated_manager">Version of LSPosed Manager and LSPosed Core are not consistent. Please re-install the corresponding version.</string>
<string name="lsposed_not_active">LSPosed is not currently installed or active.</string>
</resources>

View File

@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!--suppress ALL -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:title="@string/settings_group_app"
app:iconSpaceReserved="false">
<SwitchPreferenceCompat
android:defaultValue="false"
android:key="skip_xposedminversion_check"
android:summary="@string/skip_xposedminversion_check_summ"
android:title="@string/skip_xposedminversion_check"
app:iconSpaceReserved="false" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/settings_group_theme"
app:iconSpaceReserved="false">