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 @@
-
-
-