diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/InfoDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/InfoDialogBuilder.java index c6d759ca..85f4ddf9 100644 --- a/app/src/main/java/org/lsposed/manager/ui/dialog/InfoDialogBuilder.java +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/InfoDialogBuilder.java @@ -22,10 +22,8 @@ package org.lsposed.manager.ui.dialog; import android.content.Context; import android.os.Build; import android.view.LayoutInflater; -import android.view.View; import androidx.annotation.NonNull; -import androidx.core.text.HtmlCompat; import org.lsposed.manager.BuildConfig; import org.lsposed.manager.ConfigManager; @@ -40,10 +38,16 @@ public class InfoDialogBuilder extends BlurBehindDialogBuilder { public InfoDialogBuilder(@NonNull Context context) { super(context); + setTitle(R.string.info); DialogInfoBinding binding = DialogInfoBinding.inflate(LayoutInflater.from(context), null, false); - binding.apiVersion.setText(String.valueOf(ConfigManager.getXposedApiVersion())); - binding.frameworkVersion.setText(String.format(Locale.US, "%s (%s)", ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); + if (ConfigManager.isBinderAlive()) { + binding.apiVersion.setText(String.valueOf(ConfigManager.getXposedApiVersion())); + binding.frameworkVersion.setText(String.format(Locale.US, "%s (%s)", ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); + } else { + binding.apiVersion.setText(R.string.not_installed); + binding.frameworkVersion.setText(R.string.not_installed); + } binding.managerVersion.setText(String.format(Locale.US, "%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); if (Build.VERSION.PREVIEW_SDK_INT != 0) { @@ -55,17 +59,6 @@ public class InfoDialogBuilder extends BlurBehindDialogBuilder { binding.device.setText(getDevice()); binding.systemAbi.setText(Build.SUPPORTED_ABIS[0]); - if (!ConfigManager.isSepolicyLoaded()) { - binding.note.setVisibility(View.VISIBLE); - binding.note.setText(HtmlCompat.fromHtml(context.getString(R.string.selinux_policy_not_loaded), HtmlCompat.FROM_HTML_MODE_LEGACY)); - } else if (!ConfigManager.systemServerRequested()) { - binding.note.setVisibility(View.VISIBLE); - binding.note.setText(HtmlCompat.fromHtml(context.getString(R.string.system_inject_fail), HtmlCompat.FROM_HTML_MODE_LEGACY)); - } else if (!ConfigManager.dex2oatFlagsLoaded()) { - binding.note.setVisibility(View.VISIBLE); - binding.note.setText(HtmlCompat.fromHtml(context.getString(R.string.system_prop_incorrect), HtmlCompat.FROM_HTML_MODE_LEGACY)); - } - setView(binding.getRoot()); setPositiveButton(android.R.string.ok, null); diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/WarningDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/WarningDialogBuilder.java new file mode 100644 index 00000000..c9c29ef4 --- /dev/null +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/WarningDialogBuilder.java @@ -0,0 +1,71 @@ +/* + * This file is part of LSPosed. + * + * LSPosed is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * LSPosed is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with LSPosed. If not, see . + * + * Copyright (C) 2021 LSPosed Contributors + */ + +package org.lsposed.manager.ui.dialog; + +import android.app.Activity; +import android.content.Context; +import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.core.text.HtmlCompat; + +import org.lsposed.manager.ConfigManager; +import org.lsposed.manager.R; +import org.lsposed.manager.databinding.DialogItemBinding; +import org.lsposed.manager.databinding.DialogWarningBinding; +import org.lsposed.manager.util.chrome.LinkTransformationMethod; + +public class WarningDialogBuilder extends BlurBehindDialogBuilder { + + public WarningDialogBuilder(@NonNull Context context) { + super(context); + Activity activity = (Activity) context; + setTitle(R.string.partial_activated); + + LayoutInflater inflater = LayoutInflater.from(context); + DialogWarningBinding binding = DialogWarningBinding.inflate(inflater, null, false); + + if (!ConfigManager.isSepolicyLoaded()) { + DialogItemBinding item = DialogItemBinding.inflate(inflater, binding.container, true); + item.title.setText(R.string.selinux_policy_not_loaded_summary); + item.value.setText(HtmlCompat.fromHtml(activity.getString(R.string.selinux_policy_not_loaded), HtmlCompat.FROM_HTML_MODE_LEGACY)); + item.value.setMovementMethod(LinkMovementMethod.getInstance()); + item.value.setTransformationMethod(new LinkTransformationMethod(activity)); + } + if (!ConfigManager.systemServerRequested()) { + DialogItemBinding item = DialogItemBinding.inflate(inflater, binding.container, true); + item.title.setText(R.string.system_inject_fail_summary); + item.value.setText(HtmlCompat.fromHtml(activity.getString(R.string.system_inject_fail), HtmlCompat.FROM_HTML_MODE_LEGACY)); + item.value.setMovementMethod(LinkMovementMethod.getInstance()); + item.value.setTransformationMethod(new LinkTransformationMethod(activity)); + } + if (!ConfigManager.dex2oatFlagsLoaded()) { + DialogItemBinding item = DialogItemBinding.inflate(inflater, binding.container, true); + item.title.setText(R.string.system_prop_incorrect_summary); + item.value.setText(HtmlCompat.fromHtml(activity.getString(R.string.system_prop_incorrect), HtmlCompat.FROM_HTML_MODE_LEGACY)); + item.value.setMovementMethod(LinkMovementMethod.getInstance()); + item.value.setTransformationMethod(new LinkTransformationMethod(activity)); + } + + setView(binding.getRoot()); + setPositiveButton(android.R.string.ok, null); + } +} diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java index 99506a0d..d35a615b 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java @@ -19,10 +19,13 @@ package org.lsposed.manager.ui.fragment; +import android.app.Activity; import android.os.Build; import android.os.Bundle; +import android.text.SpannableStringBuilder; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -37,9 +40,9 @@ import org.lsposed.manager.ConfigManager; import org.lsposed.manager.R; import org.lsposed.manager.databinding.DialogAboutBinding; import org.lsposed.manager.databinding.FragmentHomeBinding; -import org.lsposed.manager.ui.activity.base.BaseActivity; import org.lsposed.manager.ui.dialog.BlurBehindDialogBuilder; import org.lsposed.manager.ui.dialog.InfoDialogBuilder; +import org.lsposed.manager.ui.dialog.WarningDialogBuilder; import org.lsposed.manager.util.ModuleUtil; import org.lsposed.manager.util.NavUtil; import org.lsposed.manager.util.chrome.LinkTransformationMethod; @@ -56,22 +59,18 @@ public class HomeFragment extends BaseFragment { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentHomeBinding.inflate(inflater, container, false); - setupToolbar(binding.toolbar, R.string.app_name); + setupToolbar(binding.toolbar, getString(R.string.app_name), R.menu.menu_home); binding.toolbar.setNavigationIcon(null); binding.nestedScrollView.getBorderViewDelegate().setBorderVisibilityChangedListener((top, oldTop, bottom, oldBottom) -> binding.appBar.setRaised(!top)); - return binding.getRoot(); - } - @Override - public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - BaseActivity activity = (BaseActivity) requireActivity(); - boolean isBinderAlive = ConfigManager.isBinderAlive(); - boolean needUpdate = App.needUpdate(); + Activity activity = requireActivity(); binding.status.setOnClickListener(v -> { - if (isBinderAlive && !needUpdate) { - new InfoDialogBuilder(activity).setTitle(R.string.info).show(); + if (ConfigManager.isBinderAlive() && !App.needUpdate()) { + if (!ConfigManager.isSepolicyLoaded() || !ConfigManager.systemServerRequested() || !ConfigManager.dex2oatFlagsLoaded()) { + new WarningDialogBuilder(activity).show(); + } else { + new InfoDialogBuilder(activity).setTitle(R.string.info).show(); + } } else { NavUtil.startURL(activity, getString(R.string.about_source)); } @@ -80,51 +79,74 @@ public class HomeFragment extends BaseFragment { binding.download.setOnClickListener(new StartFragmentListener(R.id.action_repo_fragment, false)); binding.logs.setOnClickListener(new StartFragmentListener(R.id.action_logs_fragment, true)); binding.settings.setOnClickListener(new StartFragmentListener(R.id.action_settings_fragment, false)); - binding.about.setOnClickListener(v -> { + binding.issue.setOnClickListener(view -> NavUtil.startURL(activity, "https://github.com/LSPosed/LSPosed/issues")); + + updateStates(requireActivity(), ConfigManager.isBinderAlive(), App.needUpdate()); + return binding.getRoot(); + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + int itemId = item.getItemId(); + if (itemId == R.id.menu_refresh) { + updateStates(requireActivity(), ConfigManager.isBinderAlive(), App.needUpdate()); + } else if (itemId == R.id.menu_info) { + new InfoDialogBuilder(requireActivity()).setTitle(R.string.info).show(); + } else if (itemId == R.id.menu_about) { + Activity activity = requireActivity(); DialogAboutBinding binding = DialogAboutBinding.inflate(LayoutInflater.from(requireActivity()), null, false); - binding.sourceCode.setMovementMethod(LinkMovementMethod.getInstance()); - binding.sourceCode.setTransformationMethod(new LinkTransformationMethod(activity)); - binding.sourceCode.setText(HtmlCompat.fromHtml(getString( + binding.designAboutTitle.setText(R.string.app_name); + binding.designAboutInfo.setMovementMethod(LinkMovementMethod.getInstance()); + binding.designAboutInfo.setTransformationMethod(new LinkTransformationMethod(activity)); + SpannableStringBuilder sb = new SpannableStringBuilder(HtmlCompat.fromHtml(getString( R.string.about_view_source_code, "GitHub", "Telegram"), HtmlCompat.FROM_HTML_MODE_LEGACY)); - binding.translators.setMovementMethod(LinkMovementMethod.getInstance()); - binding.translators.setTransformationMethod(new LinkTransformationMethod(activity)); - binding.translators.setText(HtmlCompat.fromHtml(getString(R.string.about_translators, getString(R.string.translators)), HtmlCompat.FROM_HTML_MODE_LEGACY)); - binding.version.setText(String.format(Locale.US, "LSPosed %s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); + sb.append("\n\n"); + sb.append(HtmlCompat.fromHtml(getString(R.string.about_translators, getString(R.string.translators)), HtmlCompat.FROM_HTML_MODE_LEGACY)); + binding.designAboutInfo.setText(sb); + binding.designAboutVersion.setText(String.format(Locale.US, "%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); new BlurBehindDialogBuilder(activity) .setView(binding.getRoot()) .show(); - }); + } + return super.onOptionsItemSelected(item); + } + + private void updateStates(Activity activity, boolean binderAlive, boolean needUpdate) { int cardBackgroundColor; - if (isBinderAlive) { - if (!ConfigManager.isSepolicyLoaded()) { - binding.statusTitle.setText(R.string.partial_activated); - cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), rikka.material.R.attr.colorWarning); - binding.statusIcon.setImageResource(R.drawable.ic_warning); - binding.statusSummary.setText(R.string.selinux_policy_not_loaded_summary); - } else if (!ConfigManager.systemServerRequested()) { - binding.statusTitle.setText(R.string.partial_activated); - cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), rikka.material.R.attr.colorWarning); - binding.statusIcon.setImageResource(R.drawable.ic_warning); - binding.statusSummary.setText(R.string.system_inject_fail_summary); - } else if (!ConfigManager.dex2oatFlagsLoaded()) { - binding.statusTitle.setText(R.string.partial_activated); - cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), rikka.material.R.attr.colorWarning); - binding.statusIcon.setImageResource(R.drawable.ic_warning); - binding.statusSummary.setText(R.string.system_prop_incorrect_summary); - } else if (needUpdate) { + if (binderAlive) { + StringBuilder sb = new StringBuilder(String.format(Locale.US, "%s (%d)", + ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); + if (needUpdate) { + cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorInstall); binding.statusTitle.setText(R.string.need_update); + binding.statusIcon.setImageResource(R.drawable.ic_round_update_24); + sb.append("\n\n"); + sb.append(getString(R.string.please_update_summary)); + } else if (!ConfigManager.isSepolicyLoaded() || !ConfigManager.systemServerRequested() || !ConfigManager.dex2oatFlagsLoaded()) { cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), rikka.material.R.attr.colorWarning); - binding.statusIcon.setImageResource(R.drawable.ic_warning); - binding.statusSummary.setText(R.string.please_update_summary); + binding.statusTitle.setText(R.string.partial_activated); + binding.statusIcon.setImageResource(R.drawable.ic_round_warning_24); + sb.append("\n"); + if (!ConfigManager.isSepolicyLoaded()) { + sb.append("\n"); + sb.append(getString(R.string.selinux_policy_not_loaded_summary)); + } + if (!ConfigManager.systemServerRequested()) { + sb.append("\n"); + sb.append(getString(R.string.system_inject_fail_summary)); + } + if (!ConfigManager.dex2oatFlagsLoaded()) { + sb.append("\n"); + sb.append(getString(R.string.system_prop_incorrect_summary)); + } } else { - binding.statusTitle.setText(R.string.activated); cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorNormal); - binding.statusIcon.setImageResource(R.drawable.ic_check_circle); - binding.statusSummary.setText(String.format(Locale.ROOT, "%s (%d)", - ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); + binding.statusTitle.setText(R.string.activated); + binding.statusIcon.setImageResource(R.drawable.ic_round_check_circle_24); } + binding.statusSummary.setText(sb.toString()); } else { cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorInstall); boolean isMagiskInstalled = ConfigManager.isMagiskInstalled(); @@ -134,7 +156,7 @@ public class HomeFragment extends BaseFragment { binding.status.setOnClickListener(null); binding.download.setVisibility(View.GONE); } - binding.statusIcon.setImageResource(R.drawable.ic_error); + binding.statusIcon.setImageResource(R.drawable.ic_round_error_outline_24); Snackbar.make(binding.snackbar, R.string.lsposed_not_active, Snackbar.LENGTH_INDEFINITE).show(); } binding.status.setCardBackgroundColor(cardBackgroundColor); diff --git a/app/src/main/res/drawable/ic_assignment.xml b/app/src/main/res/drawable/ic_assignment.xml deleted file mode 100644 index fc44671c..00000000 --- a/app/src/main/res/drawable/ic_assignment.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_round_assignment_24.xml b/app/src/main/res/drawable/ic_round_assignment_24.xml new file mode 100644 index 00000000..54fb9d76 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_assignment_24.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_round_bug_report_24.xml b/app/src/main/res/drawable/ic_round_bug_report_24.xml new file mode 100644 index 00000000..c0ee0011 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_bug_report_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_round_check_circle_24.xml b/app/src/main/res/drawable/ic_round_check_circle_24.xml new file mode 100644 index 00000000..1f3ee6e6 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_check_circle_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_round_error_outline_24.xml b/app/src/main/res/drawable/ic_round_error_outline_24.xml new file mode 100644 index 00000000..53237a2f --- /dev/null +++ b/app/src/main/res/drawable/ic_round_error_outline_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_round_settings_24.xml b/app/src/main/res/drawable/ic_round_settings_24.xml new file mode 100644 index 00000000..6da10fa3 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_settings_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_check_circle.xml b/app/src/main/res/drawable/ic_round_update_24.xml similarity index 57% rename from app/src/main/res/drawable/ic_check_circle.xml rename to app/src/main/res/drawable/ic_round_update_24.xml index accb7726..2b469b67 100644 --- a/app/src/main/res/drawable/ic_check_circle.xml +++ b/app/src/main/res/drawable/ic_round_update_24.xml @@ -14,17 +14,16 @@ ~ You should have received a copy of the GNU General Public License ~ along with LSPosed. If not, see . ~ - ~ Copyright (C) 2020 EdXposed Contributors ~ Copyright (C) 2021 LSPosed Contributors --> + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> + android:pathData="M11,8.75v3.68c0,0.35 0.19,0.68 0.49,0.86l3.12,1.85c0.36,0.21 0.82,0.09 1.03,-0.26c0.21,-0.36 0.1,-0.82 -0.26,-1.03l-2.87,-1.71v-3.4C12.5,8.34 12.16,8 11.75,8S11,8.34 11,8.75zM21,9.5V4.21c0,-0.45 -0.54,-0.67 -0.85,-0.35l-1.78,1.78c-1.81,-1.81 -4.39,-2.85 -7.21,-2.6c-4.19,0.38 -7.64,3.75 -8.1,7.94C2.46,16.4 6.69,21 12,21c4.59,0 8.38,-3.44 8.93,-7.88c0.07,-0.6 -0.4,-1.12 -1,-1.12c-0.5,0 -0.92,0.37 -0.98,0.86c-0.43,3.49 -3.44,6.19 -7.05,6.14c-3.71,-0.05 -6.84,-3.18 -6.9,-6.9C4.94,8.2 8.11,5 12,5c1.93,0 3.68,0.79 4.95,2.05l-2.09,2.09C14.54,9.46 14.76,10 15.21,10h5.29C20.78,10 21,9.78 21,9.5z" /> diff --git a/app/src/main/res/drawable/ic_round_warning_24.xml b/app/src/main/res/drawable/ic_round_warning_24.xml new file mode 100644 index 00000000..506d0586 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_warning_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/shortcut_ic_logs.xml b/app/src/main/res/drawable/shortcut_ic_logs.xml index 4e82b209..c2927fb8 100644 --- a/app/src/main/res/drawable/shortcut_ic_logs.xml +++ b/app/src/main/res/drawable/shortcut_ic_logs.xml @@ -23,7 +23,7 @@ diff --git a/app/src/main/res/layout/activity_crash_report.xml b/app/src/main/res/layout/activity_crash_report.xml index dcc3adbb..cf15a962 100644 --- a/app/src/main/res/layout/activity_crash_report.xml +++ b/app/src/main/res/layout/activity_crash_report.xml @@ -51,7 +51,7 @@ android:layout_height="128dp" android:layout_centerHorizontal="true" android:layout_margin="8dp" - app:srcCompat="@drawable/ic_warning" + app:srcCompat="@drawable/ic_round_warning_24" tools:ignore="ContentDescription" /> - + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="24dp"> - + + + android:layout_marginStart="16dp"> - + - + + + + + diff --git a/app/src/main/res/layout/dialog_info.xml b/app/src/main/res/layout/dialog_info.xml index 5b414a5d..53cd498d 100644 --- a/app/src/main/res/layout/dialog_info.xml +++ b/app/src/main/res/layout/dialog_info.xml @@ -104,12 +104,5 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - - diff --git a/app/src/main/res/drawable/ic_error.xml b/app/src/main/res/layout/dialog_item.xml similarity index 54% rename from app/src/main/res/drawable/ic_error.xml rename to app/src/main/res/layout/dialog_item.xml index 9672b7c8..6e171613 100644 --- a/app/src/main/res/drawable/ic_error.xml +++ b/app/src/main/res/layout/dialog_item.xml @@ -14,17 +14,23 @@ ~ You should have received a copy of the GNU General Public License ~ along with LSPosed. If not, see . ~ - ~ Copyright (C) 2020 EdXposed Contributors ~ Copyright (C) 2021 LSPosed Contributors --> + - - - + + + + diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/layout/dialog_warning.xml similarity index 55% rename from app/src/main/res/drawable/ic_info.xml rename to app/src/main/res/layout/dialog_warning.xml index 2dc5def1..53cd5ff7 100644 --- a/app/src/main/res/drawable/ic_info.xml +++ b/app/src/main/res/layout/dialog_warning.xml @@ -1,4 +1,4 @@ - - - - + + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 790439a9..a2330f34 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -90,7 +90,7 @@ android:layout_width="24dp" android:layout_height="24dp" android:layout_centerVertical="true" - app:srcCompat="@drawable/ic_check_circle" + app:srcCompat="@drawable/ic_round_check_circle_24" app:tint="?android:attr/textColorPrimaryInverse" /> + app:srcCompat="@drawable/ic_round_assignment_24" /> + app:srcCompat="@drawable/ic_round_settings_24" /> @@ -244,14 +244,14 @@ + android:contentDescription="@string/report_issue" + app:srcCompat="@drawable/ic_round_bug_report_24" /> diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml deleted file mode 100644 index 2e1bb577..00000000 --- a/app/src/main/res/layout/fragment_main.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_warning.xml b/app/src/main/res/menu/menu_home.xml similarity index 67% rename from app/src/main/res/drawable/ic_warning.xml rename to app/src/main/res/menu/menu_home.xml index ad233067..c52f279e 100644 --- a/app/src/main/res/drawable/ic_warning.xml +++ b/app/src/main/res/menu/menu_home.xml @@ -1,4 +1,4 @@ - - - - + + + + + + + diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index b1537199..15f1f9b5 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -38,7 +38,7 @@ Activado Parcialmente activado SEPolicy no está cargado correctamente - WARNING: SEPolicy no está cargado correctamente. Los módulos de hooks del framework del sistema no funcionarán.
Por favor, reporta esto al desarrollador Magisk.]]>
+ Por favor, reporta esto al desarrollador Magisk.]]> LSPosed no está instalado o activado actualmente. Versión de la API Versión del framework diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index c6f61e67..9eae4c87 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -38,9 +38,9 @@ SEPolicy n\’est pas chargé correctement Échec de l\’injection du sous système - AVERTISSEMENT: Échec de l\’injection du sous système.
Ceci est rare et peut être causé par Magisk ou certains modules Magisk de basse qualité.
Éssayez de désactiver les modules Magisk autres que Riru et LSPosed ou envoyez le journal complet aux développeurs.]]>
+ Ceci est rare et peut être causé par Magisk ou certains modules Magisk de basse qualité.
Éssayez de désactiver les modules Magisk autres que Riru et LSPosed ou envoyez le journal complet aux développeurs.]]>
Propriétés système incorrectes - AVERTISSEMENT: Propriétés système incorrectes.
Certaines propriétés nécessaires au système ont été supprimées ou modifiées.
Les modules peuvent s\'invalider occasionnellement.]]>
+ Certaines propriétés nécessaires au système ont été supprimées ou modifiées.
Les modules peuvent s\'invalider occasionnellement.]]>
Mise à jour nécessaire Merci d\’installer la dernière version de LSPosed LSPosed n\’est actuellement pas installé ou activé. diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 5be66e65..5784e8d0 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -31,7 +31,7 @@ הופעל הופעל חלקית SEPolicy לא נטען כמו שצריך - + LSPosed כרגע לא מותקן או מופעל. גרסת API גרסת Framework diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index bdf005f5..eedb5b5d 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -37,11 +37,11 @@ 有効化済 部分的に有効化済 SEPolicy が正しく読み込まれていません - 警告: SEPolicy が正しく読み込まれておらず、システムフレームワークをフックするためのモジュールが動作しません。
本障害についてMagisk 開発者に報告して下さい。]]>
+ 本障害についてMagisk 開発者に報告して下さい。]]> システムフレームワークへのパッチに失敗しました - 警告: システムフレームワークへのパッチに失敗しました。
本現象はごく稀に発生し、Magisk もしくは低品質な Magisk モジュールが起因で発生します。
Riru, LSPosed 以外の Magiskモジュールの一時無効化の試行 または 開発者へフルログを提出して下さい。]]>
+ 本現象はごく稀に発生し、Magisk もしくは低品質な Magisk モジュールが起因で発生します。
Riru, LSPosed 以外の Magiskモジュールの一時無効化の試行 または 開発者へフルログを提出して下さい。]]>
誤ったシステム設定 - 警告: システム設定に誤りがあります。
幾つかの必須システム設定が削除もしくは変更されています。
モジュールが無効化される場合があります。]]>
+ 幾つかの必須システム設定が削除もしくは変更されています。
モジュールが無効化される場合があります。]]>
アップデート要 最新バージョンの LSPosed をインストールして下さい LSPosed が未インストールもしくは有効化されていません。 diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 9da4b776..4a52e4bb 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -36,9 +36,9 @@ 활성화됨 부분적으로 활성화됨 SEPolicy가 제대로 로드되지 않았습니다. - 주의: SEPolicy가 제대로 로드되지 않아 시스템 프레임워크를 후크하는 모듈이 작동하지 않습니다.
Magisk 개발자에게 보고하십시오.]]>
+ Magisk 개발자에게 보고하십시오.]]> System Framework 주입 실패 - 주의: System Framework 주입 실패.
이는 드물게 발생하며, Magisk 또는 일부 저품질 Magisk 모듈 때문일 수 있습니다.
Riru 및 LSPosed 이외의 Magisk 모듈을 비활성화하거나 전체 로그를 개발자에게 제출하십시오.]]>
+ 이는 드물게 발생하며, Magisk 또는 일부 저품질 Magisk 모듈 때문일 수 있습니다.
Riru 및 LSPosed 이외의 Magisk 모듈을 비활성화하거나 전체 로그를 개발자에게 제출하십시오.]]>
LSPosed가 현재 설치되어 있지 않거나 활성화되어 있지 않습니다. API 버전 Framework 버전 diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 8b1eb58b..8f38d9cf 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -39,7 +39,7 @@ SEPolicy is niet correct geladen Systeem Framework injectie is mislukt - WAARSCHUWING: Systeem Framework injectie mislukt.
Dit is zeldzaam en kan worden veroorzaakt door Magisk of sommige Magisk-modules van lage kwaliteit.
Probeer andere Magisk-modules dan Riru en LSPosed uit te schakelen of stuur een volledig logboek naar de ontwikkelaars.]]>
+ Dit is zeldzaam en kan worden veroorzaakt door Magisk of sommige Magisk-modules van lage kwaliteit.
Probeer andere Magisk-modules dan Riru en LSPosed uit te schakelen of stuur een volledig logboek naar de ontwikkelaars.]]>
LSPosed is momenteel niet geïnstalleerd of actief. API versie Framework versie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 466ad4fa..2e6f96ea 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -37,11 +37,11 @@ Ativado Parcialmente ativado SEPolicy não está carregado corretamente - AVISO: SEPolicy não está carregado corretamente, módulos que aplicam hooks do Framework do Sistema não funcionarão.
Por favor, relate isso para o desenvolvedor do Magisk.]]>
+ Por favor, relate isso para o desenvolvedor do Magisk.]]> A injeção do Framework do Sistema falhou - AVISO: Falha na injeção do Framework do Sistema
Isso é raro e pode ter sido causado pelo Magisk ou por algum módulo do Magisk de baixa qualidade.
Por favor, tente desabilitar os módulos do Magisk que não sejam o Riru e o LSPosed ou envie o log completo para os desenvolvedores.]]>
+ Isso é raro e pode ter sido causado pelo Magisk ou por algum módulo do Magisk de baixa qualidade.
Por favor, tente desabilitar os módulos do Magisk que não sejam o Riru e o LSPosed ou envie o log completo para os desenvolvedores.]]>
Propriedade do sistema incorreta - AVISO: Propriedade do sistema incorreta.
Algumas propriedades do sistema necessárias foram excluídas ou modificadas.
Algum módulo pode ser invalidado ocasionalmente.]]>
+ Algumas propriedades do sistema necessárias foram excluídas ou modificadas.
Algum módulo pode ser invalidado ocasionalmente.]]>
Necessário atualizar Por favor, instale a versão mais recente do LSPosed O módulo do LSPosed não está instalado ou está desativado. diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index df3157ad..b44e3b6e 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -40,11 +40,11 @@ Активирован Частично активирован SEPolicy не загружен должным образом - ВНИМАНИЕ: SEPolicy не загружается должным образом, модули которым нужен системный фреймворк, не будут работать.
Пожалуйста, сообщите об этом сюда Magisk разработчик.]]>
+ Пожалуйста, сообщите об этом сюда Magisk разработчик.]]> Ошибка внедрения системного фреймворка - ВНИМАНИЕ: Ошибка внедрения системного фреймворка.
Это редкость и может быть вызвано Magisk или несовместимыми модулями Magisk.
Пожалуйста, попрорбуйте отключить модули Magisk кроме Riru и LSPosed или пришлите полные логи разработчику.]]>
+ Это редкость и может быть вызвано Magisk или несовместимыми модулями Magisk.
Пожалуйста, попрорбуйте отключить модули Magisk кроме Riru и LSPosed или пришлите полные логи разработчику.]]>
Не правильные системные настройки - ВНИМАНИЕ: Не правильные системные настройки.
Некоторые системные настройки нужные для работы удалены или изменены.
Модули могут не работать должным образом.]]>
+ Некоторые системные настройки нужные для работы удалены или изменены.
Модули могут не работать должным образом.]]>
Требуется обновление Установите последнюю версию LSPosed! LSPosed не установлен или не активирован! diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 9a58ba8e..d966586e 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -38,11 +38,11 @@ Aktif edildi Kısmen etkinleştirildi SEPolicy düzgün yüklenmemiş - WARNING: SEPolicy düzgün yüklenmemiş, System Framework\'u bağlayan modüller çalışmayacaktır.
Lütfen bunu rapor edin Magisk developer.]]>
+ Lütfen bunu rapor edin Magisk developer.]]> Sistem Çerçevesi enjeksiyonu başarısız oldu - WARNING: Sistem Çerçevesi enjekte başarısız oldu.
Bu nadirdir ve neden olabilir Magisk Bazı düşük kaliteli magisk modülleri
Lütfen Riru ve Lsposed dışındaki Magisk modüllerini devre dışı bırakmayı deneyin veya geliştiricilere tam günlüğü gönderin.]]>
+ Bu nadirdir ve neden olabilir Magisk Bazı düşük kaliteli magisk modülleri
Lütfen Riru ve Lsposed dışındaki Magisk modüllerini devre dışı bırakmayı deneyin veya geliştiricilere tam günlüğü gönderin.]]>
Sistem desteği yanlış - WARNING: Sistem desteği yanlış.
Bazı gerekli sistem özellikleri silindi veya değiştirildi.
Modüller zaman geçersiz olabilir.]]>
+ Bazı gerekli sistem özellikleri silindi veya değiştirildi.
Modüller zaman geçersiz olabilir.]]>
güncelleme gerekiyor Lütfen Lsposed\'in en son sürümünü yükleyin Lsposed şu anda yüklü veya etkin değil. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 93d66b37..0dc2f5d1 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -43,11 +43,11 @@ 已激活 部分激活 SEPolicy 未被正确加载 - 警告:SEPolicy 未被正确加载,作用于系统框架的模块将不起作用。
请将此报告给 Magisk 开发者。]]>
+ 请将此报告给 Magisk 开发者。]]> 系统框架注入失败 - 警告:系统注入失败。
这是极罕见的情况,可能是由 Magisk 或低质 Magisk 模块导致。
请尝试禁用除 Riru 和 LSPosed 外的 Magisk 模块,或向开发者提供完整日志。]]>
+ Magisk 或低质 Magisk 模块导致。
请尝试禁用除 Riru 和 LSPosed 外的 Magisk 模块,或向开发者提供完整日志。]]>
系统属性异常 - 警告:系统属性异常。
一些必须的系统属性被删除或被修改。
模块可能会随机失效。]]>
+ 模块可能会随机失效。]]> 需要更新 请安装新版 LSPosed LSPosed 未安装或未激活 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index fa7c714e..36f3d6b5 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -40,7 +40,7 @@ Activated Partially activated SEPolicy is not loaded properly - WARNING: SEPolicy is not loaded properly, modules that hook System Framework will not work.
Please report this to Magisk developer.]]>
+ Please report this to Magisk developer.]]> LSPosed 未安裝或未啟動 API version Framework version diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 80150372..7b0f1f23 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -40,11 +40,11 @@ 已啟用 部分啟用 SEPolicy 未被正確讀取 - 警告:SEPolicy 沒有被正確讀取,掛鉤系統框架的模組將無法運作。
請回報這類問題給Magisk開發者]]>
+ 請回報這類問題給Magisk開發者]]> 系統框架注入失敗 - 警告:系統注入失敗。
這是極罕見的情況,可能是由 Magisk 或低品質 Magisk 模組導致。
請嘗試禁用除 Riru 和 LSPosed 以外的 Magisk 模組,或向開發者提供完整日誌。]]>
+ 請嘗試禁用除 Riru 和 LSPosed 以外的 Magisk 模組,或向開發者提供完整日誌。]]> 系統屬性異常 - 警告:系統屬性異常。
一些必須的系統屬性被刪除或被修改。
模組可能會隨機失效。]]>
+ 一些必須的系統屬性被刪除或被修改。
模組可能會隨機失效。]]>
需要更新 請安裝新版 LSPosed LSPosed 未正確安裝或啟用。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 036973f6..bf605dc6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,6 +29,7 @@ Logs Settings About + Report issue Repository Module repository (Beta) Join our %2$s channel]]> @@ -42,11 +43,11 @@ Activated Partially activated SEPolicy is not loaded properly - WARNING: SEPolicy is not loaded properly, modules that hook System Framework will not work.
Please report this to Magisk developer.]]>
+ Please report this to Magisk developer.]]> System Framework injection failed - WARNING: System Framework inject failed.
This is rare and may be caused by Magisk or some low-quality Magisk modules.
Please try to disable Magisk modules other than Riru and LSPosed or submit full log to developers.]]>
+ Magisk or some low-quality Magisk modules.
Please try to disable Magisk modules other than Riru and LSPosed or submit full log to developers.]]>
System prop incorrect - WARNING: System prop incorrect.
Some necessary system properties deleted or modified.
Modules may invalidate occasionally.]]>
+ Modules may invalidate occasionally.]]> Need to update Please install the latest version of LSPosed LSPosed is not currently installed or active.