From 8a8f24f93e70159692908febae92387fb17f5a1c Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Wed, 9 Nov 2016 05:17:50 +0800 Subject: [PATCH] Add several options --- .../topjohnwu/magisk/SettingsActivity.java | 54 +++++++++++++++++-- .../com/topjohnwu/magisk/SplashActivity.java | 3 +- .../magisk/adapters/ModulesAdapter.java | 1 - .../com/topjohnwu/magisk/utils/Async.java | 22 -------- .../com/topjohnwu/magisk/utils/Shell.java | 3 ++ .../com/topjohnwu/magisk/utils/Utils.java | 3 +- app/src/main/res/layout/list_item_app.xml | 2 - .../main/res/layout/magisk_hide_fragment.xml | 1 - app/src/main/res/layout/modules_fragment.xml | 2 - app/src/main/res/menu/drawer.xml | 8 +-- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-pt/strings.xml | 1 - app/src/main/res/values/strings.xml | 22 ++++---- app/src/main/res/xml/app_settings.xml | 6 +++ 16 files changed, 73 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java index 1a2e5a225..189f0daab 100644 --- a/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java +++ b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java @@ -11,9 +11,11 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.WindowManager; +import android.widget.Toast; import com.topjohnwu.magisk.utils.Async; import com.topjohnwu.magisk.utils.Logger; +import com.topjohnwu.magisk.utils.Shell; import com.topjohnwu.magisk.utils.Utils; import butterknife.BindView; @@ -80,18 +82,21 @@ public class SettingsActivity extends AppCompatActivity { themePreference = (ListPreference) findPreference("theme"); CheckBoxPreference busyboxPreference = (CheckBoxPreference) findPreference("busybox"); CheckBoxPreference magiskhidePreference = (CheckBoxPreference) findPreference("magiskhide"); + CheckBoxPreference hostsPreference = (CheckBoxPreference) findPreference("hosts"); PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); themePreference.setSummary(themePreference.getValue()); - if (MagiskFragment.magiskVersion < 8) { - magiskhidePreference.setEnabled(false); - } else if (MagiskFragment.magiskVersion < 7) { + if (MagiskFragment.magiskVersion < 9) { + hostsPreference.setEnabled(false); busyboxPreference.setEnabled(false); + } else if (MagiskFragment.magiskVersion < 8) { + magiskhidePreference.setEnabled(false); } else { busyboxPreference.setEnabled(true); magiskhidePreference.setEnabled(true); + hostsPreference.setEnabled(true); } } @@ -110,6 +115,7 @@ public class SettingsActivity extends AppCompatActivity { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { Logger.dev("Settings: Prefs change " + key); + boolean checked; switch (key) { case "theme": @@ -127,7 +133,7 @@ public class SettingsActivity extends AppCompatActivity { startActivity(intent); break; case "magiskhide": - boolean checked = sharedPreferences.getBoolean("magiskhide", false); + checked = sharedPreferences.getBoolean("magiskhide", false); if (checked) { new Async.RootTask() { @Override @@ -148,7 +154,45 @@ public class SettingsActivity extends AppCompatActivity { break; case "busybox": checked = sharedPreferences.getBoolean("busybox", false); - new Async.LinkBusyBox(checked).exec(); + if (checked) { + new Async.RootTask() { + @Override + protected Void doInBackground(Void... params) { + Utils.createFile("/magisk/.core/busybox/enable"); + return null; + } + }.exec(); + } else { + new Async.RootTask() { + @Override + protected Void doInBackground(Void... params) { + Utils.removeItem("/magisk/.core/busybox/enable"); + return null; + } + }.exec(); + } + Toast.makeText(getActivity(), R.string.settings_reboot_toast, Toast.LENGTH_LONG).show(); + break; + case "hosts": + checked = sharedPreferences.getBoolean("hosts", false); + if (checked) { + new Async.RootTask() { + @Override + protected Void doInBackground(Void... voids) { + Shell.su("cp -af /system/etc/hosts /magisk/.core/hosts"); + return null; + } + }.exec(); + } else { + new Async.RootTask() { + @Override + protected Void doInBackground(Void... voids) { + Shell.su("umount -l /system/etc/hosts", "rm -f /magisk/.core/hosts"); + return null; + } + }.exec(); + } + Toast.makeText(getActivity(), R.string.settings_reboot_toast, Toast.LENGTH_LONG).show(); break; case "developer_logging": Logger.devLog = sharedPreferences.getBoolean("developer_logging", false); diff --git a/app/src/main/java/com/topjohnwu/magisk/SplashActivity.java b/app/src/main/java/com/topjohnwu/magisk/SplashActivity.java index 9b034f145..9dfba6d53 100644 --- a/app/src/main/java/com/topjohnwu/magisk/SplashActivity.java +++ b/app/src/main/java/com/topjohnwu/magisk/SplashActivity.java @@ -32,7 +32,8 @@ public class SplashActivity extends AppCompatActivity { .putBoolean("repo_done", false) .putBoolean("update_check_done", false) .putBoolean("magiskhide", Utils.itemExist(false, "/magisk/.core/magiskhide/enable")) - .putBoolean("busybox", Utils.commandExists("unzip")) + .putBoolean("busybox", Utils.commandExists("busybox")) + .putBoolean("hosts", Utils.itemExist(false, "/magisk/.core/hosts")) .apply(); new Async.CheckUpdates(prefs).exec(); diff --git a/app/src/main/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java b/app/src/main/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java index fb3006839..a1aa1fa03 100644 --- a/app/src/main/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java +++ b/app/src/main/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java @@ -1,7 +1,6 @@ package com.topjohnwu.magisk.adapters; import android.content.Context; -import android.os.AsyncTask; import android.support.design.widget.Snackbar; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java index 9f93944c2..1a0a56224 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java @@ -350,28 +350,6 @@ public class Async { } } - public static class LinkBusyBox extends RootTask { - - private boolean link; - - public LinkBusyBox(boolean b) { - link = b; - } - - @Override - protected Void doInBackground(Void... voids) { - if (link) { - Shell.su( - "rm -rf /magisk/.core/busybox", - "ln -s /data/busybox /magisk/.core/busybox" - ); - } else { - Shell.su("rm -rf /magisk/.core/busybox"); - } - return null; - } - } - public static class MagiskHide extends RootTask { @Override protected Void doInBackground(Object... params) { diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java index 3459fb6db..9c0fe496e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java @@ -39,6 +39,9 @@ public class Shell { rootSTDOUT = new StreamGobbler(rootShell.getInputStream(), rootOutList, true); rootSTDOUT.start(); + // Setup umask + su("umask 022"); + List ret = su("echo -BOC-", "id"); if (ret == null) { diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java index 0d44e08ce..0a195909e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java @@ -55,7 +55,8 @@ public class Utils { } public static boolean createFile(String path) { - String command = "touch " + path + " 2>/dev/null; if [ -f " + path + " ]; then echo true; else echo false; fi"; + String folder = path.substring(0, path.lastIndexOf('/')); + String command = "mkdir -p " + folder + " 2>/dev/null; touch " + path + " 2>/dev/null; if [ -f \"" + path + "\" ]; then echo true; else echo false; fi"; return Shell.rootAccess() && Boolean.parseBoolean(Shell.su(command).get(0)); } diff --git a/app/src/main/res/layout/list_item_app.xml b/app/src/main/res/layout/list_item_app.xml index 4b7d3b9f4..e80725d6d 100644 --- a/app/src/main/res/layout/list_item_app.xml +++ b/app/src/main/res/layout/list_item_app.xml @@ -30,7 +30,6 @@ android:scaleType="centerCrop"/> android:layout_height="match_parent" android:clipToPadding="false" android:dividerHeight="@dimen/card_divider_space" - android:paddingBottom="60dip" app:layoutManager="android.support.v7.widget.LinearLayoutManager" /> diff --git a/app/src/main/res/layout/modules_fragment.xml b/app/src/main/res/layout/modules_fragment.xml index 2c1d1fbeb..94b4a08a4 100644 --- a/app/src/main/res/layout/modules_fragment.xml +++ b/app/src/main/res/layout/modules_fragment.xml @@ -12,7 +12,6 @@ - + - + erneut laden Log jetzt löschen Log erfolgreich gelöscht - Konnte Log nicht löschen: Log ist leer Konnte Log nicht auf SD Karte speichern: diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c5c967ac1..dceeac68a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -44,7 +44,6 @@ Ricarica Cancella log Log creato con successo - Impossibile cancellare il registro: Il log è vuoto Impossibile scrivere il log sulla SD diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 3ed62395c..3e6f88611 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -44,7 +44,6 @@ Herladen Maak log leeg Log succesvol geleegd - Kon de log niet legen. Log is leeg Kon niet naar SD-kaart schrijven: diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 5b2b3dd48..1edc20f2d 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -40,7 +40,6 @@ Recarregar Limpar registro agora Registro limpado com sucesso - Não foi possível limpar o registro: Registro está vazio Não foi possível gravar o registro para o cartão SD: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9c4e5adcf..fd944c897 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ Open navigation drawer Close navigation drawer - MagiskHide + Magisk Hide Modules Downloads Log @@ -45,7 +45,6 @@ Reload Clear log now Log successfully cleared - Could not clear the log: Log is empty Could not write log to SD card: @@ -87,27 +86,24 @@ https://raw.githubusercontent.com/Magisk-Modules-Repo/%1$s/master/%2$s https://github.com/Magisk-Modules-Repo/%1$s/archive/master.zip - + General Theme Select a theme + + Enable Magisk Hide + Hide Magisk from various detections Enable BusyBox - Make Magisk\'s built-in BusyBox be visible in PATH + Bind mount Magisk\'s built-in busybox to xbin + Enable systemless hosts + Systemless support for Adblock apps Development Enable advanced debug logging Check this to enable more verbose logging. Enable shell command debug logging Check this to enable logging all shell commands and output - Enable Magisk Hide - Reboot to apply settings - - - - - - - + Reboot to apply settings diff --git a/app/src/main/res/xml/app_settings.xml b/app/src/main/res/xml/app_settings.xml index b56b59563..9b49dea74 100644 --- a/app/src/main/res/xml/app_settings.xml +++ b/app/src/main/res/xml/app_settings.xml @@ -29,6 +29,12 @@ android:title="@string/settings_busybox_title" android:summary="@string/settings_busybox_summary" /> + +