diff --git a/app/build.gradle b/app/build.gradle index 9998ac5..c26c666 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -252,7 +252,7 @@ dependencies { implementation "dev.rikka.rikkax.insets:insets:1.3.0" implementation 'com.github.Dimezis:BlurView:version-2.0.2' implementation 'com.github.KieronQuinn:MonetCompat:0.4.1' - implementation 'com.github.Fox2Code:FoxCompat:0.1.7' + implementation 'com.github.Fox2Code:FoxCompat:0.1.8' // Update the version code in the root build.gradle implementation "com.mikepenz:aboutlibraries:${latestAboutLibsRelease}" @@ -261,8 +261,8 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:5.0.0-alpha.10' implementation 'com.squareup.okhttp3:okhttp-brotli:5.0.0-alpha.10' // Chromium cronet from androidacy - implementation 'com.androidacy:cronet-common:108.0.5359.95' - implementation 'com.androidacy:cronet-native:108.0.5359.95' + implementation 'com.androidacy:cronet-common:108.0.5359.125' + implementation 'com.androidacy:cronet-native:108.0.5359.125' // Force prefer our own version of Cronet implementation 'com.github.topjohnwu.libsu:io:5.0.1' implementation 'com.github.Fox2Code:RosettaX:1.0.9' diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java index 99bfeea..4425a1e 100644 --- a/app/src/main/java/com/fox2code/mmm/MainActivity.java +++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java @@ -110,7 +110,11 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe try { ExperimentalCronetEngine cronetEngine = new ExperimentalCronetEngine.Builder(this).build(); CronetURLStreamHandlerFactory cronetURLStreamHandlerFactory = new CronetURLStreamHandlerFactory(cronetEngine); - URL.setURLStreamHandlerFactory(cronetURLStreamHandlerFactory); + try { + URL.setURLStreamHandlerFactory(cronetURLStreamHandlerFactory); + } catch (Error e) { + Log.e(TAG, "Failed to install Cronet URLStreamHandlerFactory", e); + } urlFactoryInstalled = true; } catch (Throwable t) { Log.e(TAG, "Failed to install CronetURLStreamHandlerFactory", t); @@ -702,7 +706,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe if (BuildConfig.DEBUG) Log.d("NoodleDebug", "Do setup now"); // Check if this is the first launch SharedPreferences prefs = MainApplication.getSharedPreferences(); - boolean firstLaunch = MainApplication.getBootSharedPreferences().getBoolean("first_launch", true); + boolean firstLaunch = MainApplication.getSharedPreferences().getBoolean("first_launch", true); if (BuildConfig.DEBUG) Log.d("Noodle", "First launch: " + firstLaunch); if (firstLaunch) { // Show setup box @@ -710,12 +714,15 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this); builder.setCancelable(false); builder.setTitle(R.string.setup_title); + // Create a view from R.xml.setup_box View view = getLayoutInflater().inflate(R.layout.setup_box, null); builder.setView(view); + // For sdk >= 31, use MaterialSwitch instead of MaterialSwitch // For now, we'll just have the positive button save the preferences and dismiss the dialog builder.setPositiveButton(R.string.setup_button, (dialog, which) -> { // Set the preferences - prefs.edit().putBoolean("pref_background_update_check", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_background_update_check))).isChecked()).commit(); + prefs.edit().putBoolean("pref_background_update_check", + ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_background_update_check))).isChecked()).commit(); prefs.edit().putBoolean("pref_crash_reporting", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_crash_reporting))).isChecked()).commit(); prefs.edit().putBoolean("pref_androidacy_repo_enabled", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_androidacy_repo))).isChecked()).commit(); prefs.edit().putBoolean("pref_magisk_alt_repo_enabled", ((MaterialSwitch) Objects.requireNonNull(((AlertDialog) dialog).findViewById(R.id.setup_magisk_alt_repo))).isChecked()).commit(); @@ -723,7 +730,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe Log.d("MainActivity", String.format("Background update check: %s, Crash reporting: %s, Androidacy repo: %s, Magisk alt repo: %s", prefs.getBoolean("pref_background_update_check", false), prefs.getBoolean("pref_crash_reporting", false), prefs.getBoolean("pref_androidacy_repo_enabled", false), prefs.getBoolean("pref_magisk_alt_repo_enabled", false))); } // Set pref_first_launch to false - MainApplication.getBootSharedPreferences().edit().putBoolean("first_launch", false).commit(); + MainApplication.getSharedPreferences().edit().putBoolean("first_launch", false).commit(); // Restart the app Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); @@ -732,7 +739,7 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe ensurePermissions(); }); builder.setNegativeButton(R.string.setup_button_skip, (dialog, which) -> { - MainApplication.getBootSharedPreferences().edit().putBoolean("first_launch", false).commit(); + MainApplication.getSharedPreferences().edit().putBoolean("first_launch", false).commit(); dialog.dismiss(); ensurePermissions(); }); diff --git a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java index ec5d94a..9a10a45 100644 --- a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java +++ b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java @@ -1,5 +1,6 @@ package com.fox2code.mmm.settings; +import static com.fox2code.mmm.settings.SettingsActivity.RepoFragment.applyMaterial3; import static java.lang.Integer.parseInt; import android.annotation.SuppressLint; @@ -35,6 +36,7 @@ import androidx.preference.EditTextPreference; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.PreferenceGroup; import androidx.preference.SwitchPreferenceCompat; import androidx.preference.TwoStatePreference; @@ -169,6 +171,7 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { getPreferenceManager().setSharedPreferencesName("mmm"); setPreferencesFromResource(R.xml.root_preferences, rootKey); + applyMaterial3(getPreferenceScreen()); findPreference("pref_manage_repos").setOnPreferenceClickListener(p -> { devModeStep = 0; openFragment(new RepoFragment(), R.string.manage_repos_pref); @@ -602,14 +605,18 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity { public static class RepoFragment extends PreferenceFragmentCompat { private static final int CUSTOM_REPO_ENTRIES = 5; - @Override - public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { - getPreferenceManager().setSharedPreferencesName("mmm"); - setPreferencesFromResource(R.xml.repo_preferences, rootKey); - setRepoData(RepoManager.MAGISK_ALT_REPO); - setRepoData(RepoManager.ANDROIDACY_MAGISK_REPO_ENDPOINT); - updateCustomRepoList(true); - onCreatePreferencesAndroidacy(); + // *says proudly* I stole it + // namely, from https://github.com/NeoApplications/Neo-Wellbeing/blob/9fca4136263780c022f9ec6433c0b43d159166db/app/src/main/java/org/eu/droid_ng/wellbeing/prefs/SettingsActivity.java#L101 + public static void applyMaterial3(Preference p) { + if (p instanceof PreferenceGroup) { + PreferenceGroup pg = (PreferenceGroup) p; + for (int i = 0; i < pg.getPreferenceCount(); i++) { + applyMaterial3(pg.getPreference(i)); + } + } + if (p instanceof SwitchPreferenceCompat) { + p.setWidgetLayoutResource(R.layout.preference_material_switch); + } } @SuppressLint({"RestrictedApi", "UnspecifiedImmutableFlag"}) @@ -1038,5 +1045,16 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity { if (preference == null) return; preference.setVisible(false); } + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + getPreferenceManager().setSharedPreferencesName("mmm"); + setPreferencesFromResource(R.xml.repo_preferences, rootKey); + applyMaterial3(getPreferenceScreen()); + setRepoData(RepoManager.MAGISK_ALT_REPO); + setRepoData(RepoManager.ANDROIDACY_MAGISK_REPO_ENDPOINT); + updateCustomRepoList(true); + onCreatePreferencesAndroidacy(); + } } } diff --git a/app/src/main/java/com/fox2code/mmm/utils/Http.java b/app/src/main/java/com/fox2code/mmm/utils/Http.java index 39e04dd..a775cda 100644 --- a/app/src/main/java/com/fox2code/mmm/utils/Http.java +++ b/app/src/main/java/com/fox2code/mmm/utils/Http.java @@ -143,7 +143,6 @@ public class Http { // init cronet try { // Load the cronet library - System.loadLibrary("cronet.108.0.5359.95"); CronetEngine.Builder builder = new CronetEngine.Builder(mainApplication); builder.enableBrotli(true); builder.enableHttp2(true); diff --git a/app/src/main/res/layout/preference_material_switch.xml b/app/src/main/res/layout/preference_material_switch.xml new file mode 100644 index 0000000..3be9c72 --- /dev/null +++ b/app/src/main/res/layout/preference_material_switch.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 4078f27..904c229 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,5 +1,5 @@ - - -