Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
01d847ae
Commit
01d847ae
authored
Jan 11, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve settings
parent
61e2c344
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
100 additions
and
78 deletions
+100
-78
MainActivity.java
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
+23
-11
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+62
-60
ModuleHelper.java
...rc/main/java/com/topjohnwu/magisk/utils/ModuleHelper.java
+3
-3
strings.xml
app/src/main/res/values/strings.xml
+7
-4
app_settings.xml
app/src/main/res/xml/app_settings.xml
+5
-0
No files found.
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
View file @
01d847ae
...
@@ -35,6 +35,8 @@ public class MainActivity extends AppCompatActivity
...
@@ -35,6 +35,8 @@ public class MainActivity extends AppCompatActivity
private
static
final
String
SELECTED_ITEM_ID
=
"SELECTED_ITEM_ID"
;
private
static
final
String
SELECTED_ITEM_ID
=
"SELECTED_ITEM_ID"
;
public
static
CallbackHandler
.
Event
recreate
=
new
CallbackHandler
.
Event
();
private
final
Handler
mDrawerHandler
=
new
Handler
();
private
final
Handler
mDrawerHandler
=
new
Handler
();
private
SharedPreferences
prefs
;
private
SharedPreferences
prefs
;
...
@@ -90,23 +92,29 @@ public class MainActivity extends AppCompatActivity
...
@@ -90,23 +92,29 @@ public class MainActivity extends AppCompatActivity
}
}
navigationView
.
setNavigationItemSelectedListener
(
this
);
navigationView
.
setNavigationItemSelectedListener
(
this
);
if
(
StatusFragment
.
updateCheckDone
.
isTriggered
)
{
onTrigger
(
StatusFragment
.
updateCheckDone
);
}
}
}
@Override
@Override
protected
void
onResume
()
{
protected
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
CallbackHandler
.
register
(
StatusFragment
.
updateCheckDone
,
this
);
CallbackHandler
.
register
(
StatusFragment
.
updateCheckDone
,
this
);
CallbackHandler
.
register
(
recreate
,
this
);
if
(
StatusFragment
.
updateCheckDone
.
isTriggered
)
{
onTrigger
(
StatusFragment
.
updateCheckDone
);
}
checkHideSection
();
checkHideSection
();
}
}
@Override
protected
void
onPause
()
{
super
.
onPause
();
CallbackHandler
.
unRegister
(
StatusFragment
.
updateCheckDone
,
this
);
}
@Override
@Override
protected
void
onDestroy
()
{
protected
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
CallbackHandler
.
unRegister
(
StatusFragment
.
updateCheckDon
e
,
this
);
CallbackHandler
.
unRegister
(
recreat
e
,
this
);
}
}
@Override
@Override
...
@@ -135,18 +143,22 @@ public class MainActivity extends AppCompatActivity
...
@@ -135,18 +143,22 @@ public class MainActivity extends AppCompatActivity
@Override
@Override
public
void
onTrigger
(
CallbackHandler
.
Event
event
)
{
public
void
onTrigger
(
CallbackHandler
.
Event
event
)
{
if
(
event
==
StatusFragment
.
updateCheckDone
)
{
Menu
menu
=
navigationView
.
getMenu
();
Menu
menu
=
navigationView
.
getMenu
();
menu
.
findItem
(
R
.
id
.
install
).
setVisible
(
StatusFragment
.
remoteMagiskVersion
>
0
&&
menu
.
findItem
(
R
.
id
.
install
).
setVisible
(
StatusFragment
.
remoteMagiskVersion
>
0
&&
Shell
.
rootAccess
());
Shell
.
rootAccess
());
}
else
if
(
event
==
recreate
)
{
recreate
();
}
}
}
private
void
checkHideSection
()
{
private
void
checkHideSection
()
{
Menu
menu
=
navigationView
.
getMenu
();
Menu
menu
=
navigationView
.
getMenu
();
menu
.
findItem
(
R
.
id
.
magiskhide
).
setVisible
(
StatusFragment
.
magiskVersion
>
0
&&
menu
.
findItem
(
R
.
id
.
magiskhide
).
setVisible
(
StatusFragment
.
magiskVersion
>
=
8
&&
prefs
.
getBoolean
(
"magiskhide"
,
false
)
&&
Shell
.
rootAccess
());
prefs
.
getBoolean
(
"magiskhide"
,
false
)
&&
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
modules
).
setVisible
(
StatusFragment
.
magiskVersion
>
0
&&
menu
.
findItem
(
R
.
id
.
modules
).
setVisible
(
StatusFragment
.
magiskVersion
>
=
4
&&
Shell
.
rootAccess
());
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
downloads
).
setVisible
(
StatusFragment
.
magiskVersion
>
0
&&
menu
.
findItem
(
R
.
id
.
downloads
).
setVisible
(
StatusFragment
.
magiskVersion
>
=
4
&&
Shell
.
rootAccess
());
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
log
).
setVisible
(
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
log
).
setVisible
(
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
install
).
setVisible
(
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
install
).
setVisible
(
Shell
.
rootAccess
());
...
...
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
01d847ae
package
com
.
topjohnwu
.
magisk
;
package
com
.
topjohnwu
.
magisk
;
import
android.content.
Inten
t
;
import
android.content.
Contex
t
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.preference.CheckBoxPreference
;
import
android.preference.CheckBoxPreference
;
import
android.preference.ListPreference
;
import
android.preference.ListPreference
;
import
android.preference.Preference
;
import
android.preference.PreferenceFragment
;
import
android.preference.PreferenceFragment
;
import
android.preference.PreferenceManager
;
import
android.preference.PreferenceManager
;
import
android.support.v7.app.ActionBar
;
import
android.support.v7.app.ActionBar
;
...
@@ -15,6 +16,7 @@ import android.widget.Toast;
...
@@ -15,6 +16,7 @@ import android.widget.Toast;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.ModuleHelper
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
...
@@ -86,14 +88,34 @@ public class SettingsActivity extends AppCompatActivity {
...
@@ -86,14 +88,34 @@ public class SettingsActivity extends AppCompatActivity {
CheckBoxPreference
busyboxPreference
=
(
CheckBoxPreference
)
findPreference
(
"busybox"
);
CheckBoxPreference
busyboxPreference
=
(
CheckBoxPreference
)
findPreference
(
"busybox"
);
CheckBoxPreference
magiskhidePreference
=
(
CheckBoxPreference
)
findPreference
(
"magiskhide"
);
CheckBoxPreference
magiskhidePreference
=
(
CheckBoxPreference
)
findPreference
(
"magiskhide"
);
CheckBoxPreference
hostsPreference
=
(
CheckBoxPreference
)
findPreference
(
"hosts"
);
CheckBoxPreference
hostsPreference
=
(
CheckBoxPreference
)
findPreference
(
"hosts"
);
Preference
clear
=
findPreference
(
"clear"
);
clear
.
setOnPreferenceClickListener
((
pref
)
->
{
SharedPreferences
repoMap
=
getActivity
().
getSharedPreferences
(
ModuleHelper
.
FILE_KEY
,
Context
.
MODE_PRIVATE
);
repoMap
.
edit
()
.
putString
(
ModuleHelper
.
ETAG_KEY
,
""
)
.
putInt
(
ModuleHelper
.
VERSION_KEY
,
0
)
.
apply
();
new
Async
.
LoadRepos
(
getActivity
()).
exec
();
Toast
.
makeText
(
getActivity
(),
R
.
string
.
repo_cache_cleared
,
Toast
.
LENGTH_LONG
).
show
();
return
true
;
});
themePreference
.
setSummary
(
themePreference
.
getValue
());
if
(
Utils
.
isDarkTheme
)
{
themePreference
.
setSummary
(
R
.
string
.
theme_dark
);
}
else
{
themePreference
.
setSummary
(
R
.
string
.
theme_default
);
}
if
(
StatusFragment
.
magiskVersion
<
9
)
{
if
(
StatusFragment
.
magiskVersion
<
9
)
{
hostsPreference
.
setEnabled
(
false
);
hostsPreference
.
setEnabled
(
false
);
busyboxPreference
.
setEnabled
(
false
);
busyboxPreference
.
setEnabled
(
false
);
}
else
if
(
StatusFragment
.
magiskVersion
<
8
)
{
}
else
if
(
StatusFragment
.
magiskVersion
<
8
)
{
magiskhidePreference
.
setEnabled
(
false
);
magiskhidePreference
.
setEnabled
(
false
);
}
else
if
(!
Shell
.
rootAccess
())
{
busyboxPreference
.
setEnabled
(
false
);
magiskhidePreference
.
setEnabled
(
false
);
hostsPreference
.
setEnabled
(
false
);
}
else
{
}
else
{
busyboxPreference
.
setEnabled
(
true
);
busyboxPreference
.
setEnabled
(
true
);
magiskhidePreference
.
setEnabled
(
true
);
magiskhidePreference
.
setEnabled
(
true
);
...
@@ -121,81 +143,61 @@ public class SettingsActivity extends AppCompatActivity {
...
@@ -121,81 +143,61 @@ public class SettingsActivity extends AppCompatActivity {
switch
(
key
)
{
switch
(
key
)
{
case
"theme"
:
case
"theme"
:
String
theme
=
prefs
.
getString
(
"theme"
,
getString
(
R
.
string
.
theme_default_value
));
String
theme
=
prefs
.
getString
(
"theme"
,
getString
(
R
.
string
.
theme_default_value
));
Utils
.
isDarkTheme
=
theme
.
equalsIgnoreCase
(
getString
(
R
.
string
.
theme_dark_value
));
if
(
Utils
.
isDarkTheme
!=
theme
.
equalsIgnoreCase
(
getString
(
R
.
string
.
theme_dark_value
)))
{
Utils
.
isDarkTheme
=
!
Utils
.
isDarkTheme
;
themePreference
.
setSummary
(
theme
);
getActivity
().
recreate
();
if
(
Utils
.
isDarkTheme
)
{
MainActivity
.
recreate
.
trigger
();
getActivity
().
getApplication
().
setTheme
(
R
.
style
.
AppTheme_dh
);
}
else
{
getActivity
().
getApplication
().
setTheme
(
R
.
style
.
AppTheme
);
}
}
Intent
intent
=
new
Intent
(
getActivity
(),
MainActivity
.
class
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
);
startActivity
(
intent
);
break
;
break
;
case
"magiskhide"
:
case
"magiskhide"
:
checked
=
prefs
.
getBoolean
(
"magiskhide"
,
false
);
checked
=
prefs
.
getBoolean
(
"magiskhide"
,
false
);
if
(
checked
)
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
checked
;
@Override
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
protected
Void
doInBackground
(
Void
...
params
)
{
if
(
enable
)
{
Utils
.
createFile
(
"/magisk/.core/magiskhide/enable"
);
Utils
.
createFile
(
"/magisk/.core/magiskhide/enable"
);
return
null
;
}
}.
exec
();
}
else
{
}
else
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
Utils
.
removeItem
(
"/magisk/.core/magiskhide/enable"
);
Utils
.
removeItem
(
"/magisk/.core/magiskhide/enable"
);
}
return
null
;
return
null
;
}
}
}.
exec
();
}.
exec
();
}
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
break
;
case
"busybox"
:
case
"busybox"
:
checked
=
prefs
.
getBoolean
(
"busybox"
,
false
);
checked
=
prefs
.
getBoolean
(
"busybox"
,
false
);
if
(
checked
)
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
checked
;
@Override
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
protected
Void
doInBackground
(
Void
...
params
)
{
if
(
enable
)
{
Utils
.
createFile
(
"/magisk/.core/busybox/enable"
);
Utils
.
createFile
(
"/magisk/.core/busybox/enable"
);
return
null
;
}
}.
exec
();
}
else
{
}
else
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
Utils
.
removeItem
(
"/magisk/.core/busybox/enable"
);
Utils
.
removeItem
(
"/magisk/.core/busybox/enable"
);
}
return
null
;
return
null
;
}
}
}.
exec
();
}.
exec
();
}
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
break
;
case
"hosts"
:
case
"hosts"
:
checked
=
prefs
.
getBoolean
(
"hosts"
,
false
);
checked
=
prefs
.
getBoolean
(
"hosts"
,
false
);
if
(
checked
)
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
checked
;
@Override
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
protected
Void
doInBackground
(
Void
...
voids
)
{
Shell
.
su
(
"cp -af /system/etc/hosts /magisk/.core/hosts"
);
if
(
enable
)
{
return
null
;
Shell
.
su
(
"cp -af /system/etc/hosts /magisk/.core/hosts"
,
}
"mount -o bind /magisk/.core/hosts /system/etc/hosts"
);
}.
exec
();
}
else
{
}
else
{
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
Shell
.
su
(
"umount -l /system/etc/hosts"
,
@Override
"rm -f /magisk/.core/hosts"
);
protected
Void
doInBackground
(
Void
...
voids
)
{
}
Shell
.
su
(
"umount -l /system/etc/hosts"
,
"rm -f /magisk/.core/hosts"
);
return
null
;
return
null
;
}
}
}.
exec
();
}.
exec
();
}
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
break
;
case
"developer_logging"
:
case
"developer_logging"
:
Logger
.
devLog
=
prefs
.
getBoolean
(
"developer_logging"
,
false
);
Logger
.
devLog
=
prefs
.
getBoolean
(
"developer_logging"
,
false
);
...
...
app/src/main/java/com/topjohnwu/magisk/utils/ModuleHelper.java
View file @
01d847ae
...
@@ -28,10 +28,10 @@ import java.util.Map;
...
@@ -28,10 +28,10 @@ import java.util.Map;
public
class
ModuleHelper
{
public
class
ModuleHelper
{
private
static
final
String
MAGISK_PATH
=
"/magisk"
;
private
static
final
String
MAGISK_PATH
=
"/magisk"
;
p
rivate
static
final
String
FILE_KEY
=
"RepoMap"
;
p
ublic
static
final
String
FILE_KEY
=
"RepoMap"
;
private
static
final
String
REPO_KEY
=
"repomap"
;
private
static
final
String
REPO_KEY
=
"repomap"
;
p
rivate
static
final
String
VERSION_KEY
=
"version"
;
p
ublic
static
final
String
VERSION_KEY
=
"version"
;
p
rivate
static
final
String
ETAG_KEY
=
"ETag"
;
p
ublic
static
final
String
ETAG_KEY
=
"ETag"
;
private
static
final
int
DATABASE_VER
=
1
;
private
static
final
int
DATABASE_VER
=
1
;
private
static
ValueSortedMap
<
String
,
Repo
>
repoMap
=
new
ValueSortedMap
<>();
private
static
ValueSortedMap
<
String
,
Repo
>
repoMap
=
new
ValueSortedMap
<>();
...
...
app/src/main/res/values/strings.xml
View file @
01d847ae
...
@@ -108,7 +108,9 @@
...
@@ -108,7 +108,9 @@
<string
name=
"downloading_toast"
>
Downloading %1$s
</string>
<string
name=
"downloading_toast"
>
Downloading %1$s
</string>
<string
name=
"magisk_update_title"
>
New Magisk Update Available!
</string>
<string
name=
"magisk_update_title"
>
New Magisk Update Available!
</string>
<string
name=
"magisk_update_message"
>
Magisk v%1$.1f update is live, do you want to install?
</string>
<string
name=
"magisk_update_message"
>
Magisk v%1$.1f update is live, do you want to install?
</string>
<string
name=
"settings_reboot_toast"
>
Reboot to apply settings
</string>
<string
name=
"check_release_notes"
>
Check release notes
</string>
<string
name=
"check_release_notes"
>
Check release notes
</string>
<string
name=
"repo_cache_cleared"
>
Repo cache cleared
</string>
<!--URL Templates-->
<!--URL Templates-->
<string
name=
"url_main"
translatable=
"false"
>
https://api.github.com/orgs/Magisk-Modules-Repo/repos
</string>
<string
name=
"url_main"
translatable=
"false"
>
https://api.github.com/orgs/Magisk-Modules-Repo/repos
</string>
...
@@ -121,6 +123,8 @@
...
@@ -121,6 +123,8 @@
<string
name=
"settings_theme_summary"
>
Select a theme
</string>
<string
name=
"settings_theme_summary"
>
Select a theme
</string>
<string
name=
"theme_default"
>
Default
</string>
<string
name=
"theme_default"
>
Default
</string>
<string
name=
"theme_dark"
>
Dark
</string>
<string
name=
"theme_dark"
>
Dark
</string>
<string
name=
"settings_clear_cache_title"
>
Clear Repo Cache
</string>
<string
name=
"settings_clear_cache_summary"
>
Clear the cached information for online repos, forces the app to refresh online
</string>
<string
name=
"settings_magiskhide_title"
>
Enable Magisk Hide
</string>
<string
name=
"settings_magiskhide_title"
>
Enable Magisk Hide
</string>
<string
name=
"settings_magiskhide_summary"
>
Hide Magisk from various detections
</string>
<string
name=
"settings_magiskhide_summary"
>
Hide Magisk from various detections
</string>
...
@@ -131,14 +135,13 @@
...
@@ -131,14 +135,13 @@
<string
name=
"settings_development_category"
>
Development
</string>
<string
name=
"settings_development_category"
>
Development
</string>
<string
name=
"settings_developer_logging_title"
>
Enable advanced debug logging
</string>
<string
name=
"settings_developer_logging_title"
>
Enable advanced debug logging
</string>
<string
name=
"settings_developer_logging_summary"
>
Check this to enable
more verbose logging.
</string>
<string
name=
"settings_developer_logging_summary"
>
Check this to enable
verbose logging
</string>
<string
name=
"settings_shell_logging_title"
>
Enable shell command debug logging
</string>
<string
name=
"settings_shell_logging_title"
>
Enable shell command debug logging
</string>
<string
name=
"settings_shell_logging_summary"
>
Check this to enable logging all shell commands and output
</string>
<string
name=
"settings_shell_logging_summary"
>
Check this to enable logging all shell commands and its output
</string>
<string
name=
"settings_reboot_toast"
>
Reboot to apply settings
</string>
<!-- Themes -->
<!-- Themes -->
<string
name=
"theme_default_value"
translatable=
"false"
>
default
</string>
<string
name=
"theme_default_value"
translatable=
"false"
>
default
</string>
<string
name=
"theme_dark_value"
translatable=
"false"
>
dark
</string>
<string
name=
"theme_dark_value"
translatable=
"false"
>
dark
</string>
</resources>
</resources>
app/src/main/res/xml/app_settings.xml
View file @
01d847ae
...
@@ -12,6 +12,11 @@
...
@@ -12,6 +12,11 @@
android:entries=
"@array/themes"
android:entries=
"@array/themes"
android:entryValues=
"@array/themes_values"
/>
android:entryValues=
"@array/themes_values"
/>
<Preference
android:key=
"clear"
android:title=
"@string/settings_clear_cache_title"
android:summary=
"@string/settings_clear_cache_summary"
/>
</PreferenceCategory>
</PreferenceCategory>
<PreferenceCategory
<PreferenceCategory
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment