From 6ee21618a6a9e572f0d810c4713f2dcdbeed22eb Mon Sep 17 00:00:00 2001 From: Howard Wu <40033067+Howard20181@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:18:54 +0800 Subject: [PATCH] Fix CrashReportActivity theme (#2226) --- .../ui/activity/CrashReportActivity.java | 16 ++++++++++--- .../manager/ui/fragment/HomeFragment.java | 2 +- .../manager/ui/fragment/ModulesFragment.java | 24 +++++++++---------- .../manager/ui/fragment/RepoItemFragment.java | 4 +--- .../main/res/layout/activity_crash_report.xml | 8 ------- app/src/main/res/layout/item_log_textview.xml | 1 + app/src/main/res/layout/item_onlinemodule.xml | 8 ++++--- app/src/main/res/values-en/strings.xml | 2 -- app/src/main/res/values/strings.xml | 1 - .../lspd/service/ActivityManagerService.java | 6 ++--- .../java/android/app/IActivityManager.java | 3 ++- 11 files changed, 38 insertions(+), 37 deletions(-) delete mode 100644 app/src/main/res/values-en/strings.xml diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/CrashReportActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/CrashReportActivity.java index 3a78bdfa..ac398b2b 100644 --- a/app/src/main/java/org/lsposed/manager/ui/activity/CrashReportActivity.java +++ b/app/src/main/java/org/lsposed/manager/ui/activity/CrashReportActivity.java @@ -23,13 +23,15 @@ package org.lsposed.manager.ui.activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Intent; +import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; + +import com.google.android.material.color.DynamicColors; import org.lsposed.manager.BuildConfig; import org.lsposed.manager.R; @@ -39,8 +41,9 @@ import org.lsposed.manager.util.NavUtil; import java.time.LocalDateTime; import rikka.material.app.LocaleDelegate; +import rikka.material.app.MaterialActivity; -public class CrashReportActivity extends AppCompatActivity { +public class CrashReportActivity extends MaterialActivity { ActivityCrashReportBinding binding; @Override @@ -59,7 +62,8 @@ public class CrashReportActivity extends AppCompatActivity { var clipboard = getSystemService(ClipboardManager.class); //Are there any devices without clipboard...? if (clipboard != null) { - ClipData clip = ClipData.newPlainText("LSPManagerCrashInfo", getAllErrorDetailsFromIntent(getIntent())); + ClipData clip = ClipData.newPlainText("LSPManagerCrashInfo", + getAllErrorDetailsFromIntent(getIntent())); clipboard.setPrimaryClip(clip); Toast.makeText(this, R.string.crash_info_copied, Toast.LENGTH_LONG).show(); } @@ -68,6 +72,12 @@ public class CrashReportActivity extends AppCompatActivity { } + @Override + public void onApplyUserThemeResource(@NonNull Resources.Theme theme, boolean isDecorView) { + if (!DynamicColors.isDynamicColorAvailable()) + theme.applyStyle(R.style.ThemeOverlay_MaterialBlue, true); + } + public String getAllErrorDetailsFromIntent(@NonNull Intent intent) { String versionName = String.format(LocaleDelegate.getDefaultLocale(), "%s (%d)", BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE); 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 72b02759..03b39561 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 @@ -248,7 +248,7 @@ public class HomeFragment extends BaseFragment { @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { - DialogAboutBinding binding = DialogAboutBinding.inflate(LayoutInflater.from(requireActivity()), null, false); + DialogAboutBinding binding = DialogAboutBinding.inflate(getLayoutInflater(), null, false); binding.designAboutTitle.setText(R.string.app_name); binding.designAboutInfo.setMovementMethod(LinkMovementMethod.getInstance()); binding.designAboutInfo.setTransformationMethod(new LinkTransformationMethod(requireActivity())); diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/ModulesFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/ModulesFragment.java index a96baa1e..22a17b32 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/ModulesFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/ModulesFragment.java @@ -698,21 +698,21 @@ public class ModulesFragment extends BaseFragment implements ModuleUtil.ModuleLi return 1; } }).forEachOrdered(new Consumer<>() { - private final HashSet uniquer = new HashSet<>(); + private final HashSet uniquer = new HashSet<>(); - @Override - public void accept(ModuleUtil.InstalledModule module) { - if (isPick()) { - if (!uniquer.contains(module.packageName)) { - uniquer.add(module.packageName); - if (module.userId != getUser().id) + @Override + public void accept(ModuleUtil.InstalledModule module) { + if (isPick()) { + if (!uniquer.contains(module.packageName)) { + uniquer.add(module.packageName); + if (module.userId != getUser().id) + tmpList.add(module); + } + } else if (module.userId == getUser().id) { tmpList.add(module); + } } - } else if (module.userId == getUser().id) { - tmpList.add(module); - } - } - }); + }); String queryStr = searchView != null ? searchView.getQuery().toString() : ""; searchList = tmpList; runOnUiThread(() -> getFilter().filter(queryStr)); diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java index b7c37bfb..89832dbb 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java @@ -447,9 +447,7 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.RepoLis holder.openInBrowser.setOnClickListener(v -> NavUtil.startURL(requireActivity(), release.getUrl())); List assets = release.getReleaseAssets(); if (assets != null && !assets.isEmpty()) { - holder.viewAssets.setOnClickListener(v -> { - DownloadDialog.create(requireActivity(), getParentFragmentManager(), assets); - }); + holder.viewAssets.setOnClickListener(v -> DownloadDialog.create(requireActivity(), getParentFragmentManager(), assets)); } else { holder.viewAssets.setVisibility(View.GONE); } diff --git a/app/src/main/res/layout/activity_crash_report.xml b/app/src/main/res/layout/activity_crash_report.xml index 9d44c568..2ce43e42 100644 --- a/app/src/main/res/layout/activity_crash_report.xml +++ b/app/src/main/res/layout/activity_crash_report.xml @@ -59,14 +59,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/manager_crashed" /> - - diff --git a/app/src/main/res/layout/item_onlinemodule.xml b/app/src/main/res/layout/item_onlinemodule.xml index 6c272989..482f5b11 100644 --- a/app/src/main/res/layout/item_onlinemodule.xml +++ b/app/src/main/res/layout/item_onlinemodule.xml @@ -76,7 +76,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:hyphenationFrequency="fullFast" android:maxLines="6" + android:minHeight="48dp" android:scrollbars="none" android:textAlignment="viewStart" android:textAppearance="?android:attr/textAppearanceSmall" @@ -111,10 +113,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:textAppearance="?android:attr/textAppearanceSmall" - app:layout_constrainedWidth="true" - android:textSize="12sp" android:layout_marginTop="2dp" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textSize="12sp" + app:layout_constrainedWidth="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml deleted file mode 100644 index 3ea04e70..00000000 --- a/app/src/main/res/values-en/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d75084c6..a7fa3922 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -218,7 +218,6 @@ The version of the LSPosed framework (%1$d) does not match manager (%2$d). Please reinstall LSPosed. Manager crashed - report this to Send crash info Crash info copied to clipboard Copied to clipboard diff --git a/daemon/src/main/java/org/lsposed/lspd/service/ActivityManagerService.java b/daemon/src/main/java/org/lsposed/lspd/service/ActivityManagerService.java index d82d284b..1d158894 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ActivityManagerService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ActivityManagerService.java @@ -85,10 +85,10 @@ public class ActivityManagerService { resultCode, resultData, null, requiredPermissions, null, null, appOp, null, serialized, sticky, userId); } catch (NoSuchMethodError ignored) { + return am.broadcastIntentWithFeature(thread, callingFeatureId, intent, resolvedType, resultTo, + resultCode, resultData, null, requiredPermissions, null, appOp, null, + serialized, sticky, userId); } - return am.broadcastIntentWithFeature(thread, callingFeatureId, intent, resolvedType, resultTo, - resultCode, resultData, null, requiredPermissions, null, appOp, null, - serialized, sticky, userId); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { return am.broadcastIntentWithFeature(thread, callingFeatureId, intent, resolvedType, resultTo, resultCode, resultData, map, requiredPermissions, appOp, options, serialized, sticky, userId); } else { diff --git a/hiddenapi/stubs/src/main/java/android/app/IActivityManager.java b/hiddenapi/stubs/src/main/java/android/app/IActivityManager.java index a9cc7524..f2bc2bfd 100644 --- a/hiddenapi/stubs/src/main/java/android/app/IActivityManager.java +++ b/hiddenapi/stubs/src/main/java/android/app/IActivityManager.java @@ -44,7 +44,8 @@ public interface IActivityManager extends IInterface { int broadcastIntentWithFeature(IApplicationThread caller, String callingFeatureId, Intent intent, String resolvedType, IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras, - String[] requiredPermissions, String[] excludedPermissions, int appOp, Bundle bOptions, + String[] requiredPermissions, String[] excludedPermissions, + int appOp, Bundle bOptions, boolean serialized, boolean sticky, int userId) throws RemoteException; @RequiresApi(30)