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
dc06a132
Commit
dc06a132
authored
Aug 25, 2016
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finalize 2.0 version
parent
3e97d29b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
224 additions
and
240 deletions
+224
-240
build.gradle
app/build.gradle
+1
-1
LogFragment.java
app/src/main/java/com/topjohnwu/magisk/LogFragment.java
+1
-9
MagiskFragment.java
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
+123
-97
ModulesFragment.java
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
+42
-22
WelcomeActivity.java
app/src/main/java/com/topjohnwu/magisk/WelcomeActivity.java
+3
-49
Shell.java
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
+14
-12
StreamGobbler.java
...c/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java
+2
-1
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+0
-36
magisk_fragment.xml
app/src/main/res/layout/magisk_fragment.xml
+22
-6
colors.xml
app/src/main/res/values/colors.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+15
-7
No files found.
app/build.gradle
View file @
dc06a132
...
@@ -3,7 +3,7 @@ apply plugin: 'android-apt'
...
@@ -3,7 +3,7 @@ apply plugin: 'android-apt'
android
{
android
{
compileSdkVersion
24
compileSdkVersion
24
buildToolsVersion
"24.0.
1
"
buildToolsVersion
"24.0.
2
"
defaultConfig
{
defaultConfig
{
applicationId
"com.topjohnwu.magisk"
applicationId
"com.topjohnwu.magisk"
...
...
app/src/main/java/com/topjohnwu/magisk/LogFragment.java
View file @
dc06a132
...
@@ -25,6 +25,7 @@ import android.widget.ScrollView;
...
@@ -25,6 +25,7 @@ import android.widget.ScrollView;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.io.File
;
import
java.io.File
;
...
@@ -201,13 +202,6 @@ public class LogFragment extends Fragment {
...
@@ -201,13 +202,6 @@ public class LogFragment extends Fragment {
@Override
@Override
protected
String
doInBackground
(
Void
...
voids
)
{
protected
String
doInBackground
(
Void
...
voids
)
{
// Ensure initialize is done
try
{
Utils
.
initialize
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
e
.
printStackTrace
();
}
if
(
readLog
)
{
if
(
readLog
)
{
List
<
String
>
logList
=
Utils
.
readFile
(
MAGISK_LOG
);
List
<
String
>
logList
=
Utils
.
readFile
(
MAGISK_LOG
);
...
@@ -225,8 +219,6 @@ public class LogFragment extends Fragment {
...
@@ -225,8 +219,6 @@ public class LogFragment extends Fragment {
}
}
return
""
;
return
""
;
}
}
}
}
@Override
@Override
...
...
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
View file @
dc06a132
This diff is collapsed.
Click to expand it.
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
View file @
dc06a132
...
@@ -17,10 +17,9 @@ import android.view.ViewGroup;
...
@@ -17,10 +17,9 @@ import android.view.ViewGroup;
import
android.widget.ProgressBar
;
import
android.widget.ProgressBar
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.io.File
;
import
java.io.FileFilter
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.ExecutionException
;
...
@@ -33,28 +32,22 @@ public class ModulesFragment extends Fragment {
...
@@ -33,28 +32,22 @@ public class ModulesFragment extends Fragment {
private
static
final
String
MAGISK_PATH
=
"/magisk"
;
private
static
final
String
MAGISK_PATH
=
"/magisk"
;
private
static
final
String
MAGISK_CACHE_PATH
=
"/cache/magisk"
;
private
static
final
String
MAGISK_CACHE_PATH
=
"/cache/magisk"
;
// protected static List<Module> listModules = new ArrayList<>();
private
static
List
<
Module
>
listModules
=
new
ArrayList
<>();
// protected static List<Module> listModulesCache = new ArrayList<>();
private
static
List
<
Module
>
listModulesCache
=
new
ArrayList
<>();
public
static
loadModules
loadMod
;
@BindView
(
R
.
id
.
progressBar
)
ProgressBar
progressBar
;
@BindView
(
R
.
id
.
progressBar
)
ProgressBar
progressBar
;
@BindView
(
R
.
id
.
pager
)
ViewPager
viewPager
;
@BindView
(
R
.
id
.
pager
)
ViewPager
viewPager
;
@BindView
(
R
.
id
.
tab_layout
)
TabLayout
tabLayout
;
@BindView
(
R
.
id
.
tab_layout
)
TabLayout
tabLayout
;
@Override
public
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
// listModules.clear();
// listModulesCache.clear();
}
@Nullable
@Nullable
@Override
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
public
View
onCreateView
(
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
View
view
=
inflater
.
inflate
(
R
.
layout
.
modules_fragment
,
container
,
false
);
View
view
=
inflater
.
inflate
(
R
.
layout
.
modules_fragment
,
container
,
false
);
ButterKnife
.
bind
(
this
,
view
);
ButterKnife
.
bind
(
this
,
view
);
new
CheckFolders
().
execute
();
new
updateUI
().
execute
();
setHasOptionsMenu
(
true
);
setHasOptionsMenu
(
true
);
return
view
;
return
view
;
...
@@ -70,10 +63,9 @@ public class ModulesFragment extends Fragment {
...
@@ -70,10 +63,9 @@ public class ModulesFragment extends Fragment {
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
switch
(
item
.
getItemId
())
{
switch
(
item
.
getItemId
())
{
case
R
.
id
.
force_reload
:
case
R
.
id
.
force_reload
:
listModules
.
clear
();
loadMod
=
new
loadModules
();
listModulesCache
.
clear
();
loadMod
.
execute
();
new
updateUI
().
execute
();
new
CheckFolders
().
execute
();
break
;
break
;
}
}
...
@@ -84,7 +76,7 @@ public class ModulesFragment extends Fragment {
...
@@ -84,7 +76,7 @@ public class ModulesFragment extends Fragment {
@Override
@Override
protected
List
<
Module
>
listModules
()
{
protected
List
<
Module
>
listModules
()
{
return
Utils
.
listModules
;
return
listModules
;
}
}
}
}
...
@@ -93,18 +85,46 @@ public class ModulesFragment extends Fragment {
...
@@ -93,18 +85,46 @@ public class ModulesFragment extends Fragment {
@Override
@Override
protected
List
<
Module
>
listModules
()
{
protected
List
<
Module
>
listModules
()
{
return
Utils
.
listModulesCache
;
return
listModulesCache
;
}
}
}
public
static
class
loadModules
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
listModules
.
clear
();
listModulesCache
.
clear
();
listModules
.
clear
();
listModulesCache
.
clear
();
List
<
String
>
magisk
=
Utils
.
getModList
(
MAGISK_PATH
);
List
<
String
>
magiskCache
=
Utils
.
getModList
(
MAGISK_CACHE_PATH
);
if
(!
magisk
.
isEmpty
())
{
for
(
String
mod
:
magisk
)
{
listModules
.
add
(
new
Module
(
mod
));
}
}
if
(!
magiskCache
.
isEmpty
())
{
for
(
String
mod
:
magiskCache
)
{
listModulesCache
.
add
(
new
Module
(
mod
));
}
}
return
null
;
}
}
}
private
class
CheckFolders
extends
AsyncTask
<
Void
,
Integer
,
Void
>
{
private
class
updateUI
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
@Override
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
protected
Void
doInBackground
(
Void
...
voids
)
{
// Ensure
initialize
is done
// Ensure
loadMod
is done
try
{
try
{
Utils
.
initialize
.
get
();
loadMod
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/WelcomeActivity.java
View file @
dc06a132
package
com
.
topjohnwu
.
magisk
;
package
com
.
topjohnwu
.
magisk
;
import
android.app.ProgressDialog
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.os.AsyncTask
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Handler
;
import
android.support.annotation.IdRes
;
import
android.support.annotation.IdRes
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.design.widget.NavigationView
;
import
android.support.design.widget.NavigationView
;
import
android.support.design.widget.Snackbar
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentTransaction
;
import
android.support.v4.app.FragmentTransaction
;
import
android.support.v4.view.GravityCompat
;
import
android.support.v4.view.GravityCompat
;
...
@@ -17,15 +14,9 @@ import android.support.v4.widget.DrawerLayout;
...
@@ -17,15 +14,9 @@ import android.support.v4.widget.DrawerLayout;
import
android.support.v7.app.ActionBarDrawerToggle
;
import
android.support.v7.app.ActionBarDrawerToggle
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.widget.Toolbar
;
import
android.support.v7.widget.Toolbar
;
import
android.util.Log
;
import
android.view.MenuItem
;
import
android.view.MenuItem
;
import
android.view.View
;
import
android.view.View
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
...
@@ -53,9 +44,9 @@ public class WelcomeActivity extends AppCompatActivity implements NavigationView
...
@@ -53,9 +44,9 @@ public class WelcomeActivity extends AppCompatActivity implements NavigationView
getWindow
().
getDecorView
().
setSystemUiVisibility
(
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
);
getWindow
().
getDecorView
().
setSystemUiVisibility
(
View
.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
);
}
}
Utils
.
initialize
=
new
Utils
.
Init
();
// Load mods in the background
ModulesFragment
.
loadMod
=
new
ModulesFragment
.
loadModules
();
Utils
.
initialize
.
execute
();
ModulesFragment
.
loadMod
.
execute
();
setSupportActionBar
(
toolbar
);
setSupportActionBar
(
toolbar
);
...
@@ -158,41 +149,4 @@ public class WelcomeActivity extends AppCompatActivity implements NavigationView
...
@@ -158,41 +149,4 @@ public class WelcomeActivity extends AppCompatActivity implements NavigationView
}
}
}
}
}
}
public
static
class
Init
extends
AsyncTask
<
Void
,
Integer
,
Void
>
{
private
final
AppCompatActivity
activity
;
private
ProgressDialog
progress
;
public
Init
(
AppCompatActivity
activity
)
{
this
.
activity
=
activity
;
}
@Override
protected
void
onPreExecute
()
{
super
.
onPreExecute
();
progress
=
ProgressDialog
.
show
(
activity
,
null
,
activity
.
getString
(
R
.
string
.
loading
),
true
,
false
);
}
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
return
null
;
}
@Override
protected
void
onPostExecute
(
Void
v
)
{
super
.
onPostExecute
(
v
);
progress
.
dismiss
();
if
(!
Shell
.
rootAccess
())
{
Snackbar
.
make
(
view
,
R
.
string
.
no_root_access
,
Snackbar
.
LENGTH_LONG
).
show
();
return
;
}
MagiskFragment
fragment
=
(
MagiskFragment
)
activity
.
getSupportFragmentManager
().
findFragmentByTag
(
"magisk"
);
fragment
.
onRootGranted
();
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
View file @
dc06a132
package
com
.
topjohnwu
.
magisk
.
utils
;
package
com
.
topjohnwu
.
magisk
.
utils
;
import
android.os.AsyncTask
;
import
java.io.DataOutputStream
;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -23,21 +25,18 @@ public class Shell {
...
@@ -23,21 +25,18 @@ public class Shell {
private
static
List
<
String
>
rootOutList
=
new
ArrayList
<>();
private
static
List
<
String
>
rootOutList
=
new
ArrayList
<>();
static
{
static
{
init
();
}
private
static
void
init
()
{
List
<
String
>
ret
=
sh
(
"getprop magisk.supath"
);
List
<
String
>
ret
=
sh
(
"getprop magisk.supath"
);
if
(!
ret
.
isEmpty
())
{
if
(!
ret
.
isEmpty
())
{
suPath
=
ret
.
get
(
0
)
+
"/su"
;
suPath
=
ret
.
get
(
0
)
+
"/su"
;
rootStatus
=
1
;
}
else
{
}
else
{
suPath
=
"su"
;
suPath
=
"su"
;
rootStatus
=
2
;
rootStatus
=
2
;
}
}
}
public
static
boolean
rootAccess
()
{
return
rootStatus
>
0
;
}
public
static
void
startRoot
()
{
rootStatus
=
rootStatus
==
0
?
1
:
2
;
try
{
try
{
rootShell
=
Runtime
.
getRuntime
().
exec
(
suPath
);
rootShell
=
Runtime
.
getRuntime
().
exec
(
suPath
);
...
@@ -45,15 +44,14 @@ public class Shell {
...
@@ -45,15 +44,14 @@ public class Shell {
rootSTDOUT
=
new
StreamGobbler
(
rootShell
.
getInputStream
(),
rootOutList
);
rootSTDOUT
=
new
StreamGobbler
(
rootShell
.
getInputStream
(),
rootOutList
);
rootSTDOUT
.
start
();
rootSTDOUT
.
start
();
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
// runtime error! No binary found!
// runtime error! No binary found!
Means no root
rootStatus
=
0
;
rootStatus
=
0
;
return
;
return
;
}
}
ret
=
su
(
"echo -BOC-"
,
"id"
);
List
<
String
>
ret
=
su
(
"echo -BOC-"
,
"id"
);
if
(
ret
==
null
)
{
if
(
ret
==
null
)
{
// Something wrong with root
install, not enabl
ed?
// Something wrong with root
, not allow
ed?
rootStatus
=
-
1
;
rootStatus
=
-
1
;
return
;
return
;
}
}
...
@@ -84,6 +82,10 @@ public class Shell {
...
@@ -84,6 +82,10 @@ public class Shell {
}
}
}
}
public
static
boolean
rootAccess
()
{
return
rootStatus
>
0
;
}
public
static
List
<
String
>
sh
(
String
...
commands
)
{
public
static
List
<
String
>
sh
(
String
...
commands
)
{
List
<
String
>
res
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
List
<
String
>
res
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
...
...
app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java
View file @
dc06a132
...
@@ -36,6 +36,7 @@ public class StreamGobbler extends Thread {
...
@@ -36,6 +36,7 @@ public class StreamGobbler extends Thread {
try
{
try
{
String
line
;
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
while
((
line
=
reader
.
readLine
())
!=
null
)
{
if
(!
line
.
replaceAll
(
"\\s"
,
""
).
isEmpty
())
writer
.
add
(
line
);
writer
.
add
(
line
);
}
}
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
dc06a132
package
com
.
topjohnwu
.
magisk
.
utils
;
package
com
.
topjohnwu
.
magisk
.
utils
;
import
android.os.AsyncTask
;
import
com.topjohnwu.magisk.module.Module
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
public
class
Utils
{
public
class
Utils
{
public
static
Init
initialize
;
public
static
List
<
Module
>
listModules
=
new
ArrayList
<>();
public
static
List
<
Module
>
listModulesCache
=
new
ArrayList
<>();
public
static
List
<
String
>
listLog
;
public
static
class
Init
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
Shell
.
startRoot
();
listModules
.
clear
();
listModulesCache
.
clear
();
List
<
String
>
magisk
=
getModList
(
"/magisk"
);
List
<
String
>
magiskCache
=
getModList
(
"/cache/magisk"
);
if
(!
magisk
.
isEmpty
())
{
for
(
String
mod
:
magisk
)
{
listModules
.
add
(
new
Module
(
mod
));
}
}
if
(!
magiskCache
.
isEmpty
())
{
for
(
String
mod
:
magiskCache
)
{
listModulesCache
.
add
(
new
Module
(
mod
));
}
}
listLog
=
readFile
(
"/cache/magisk.log"
);
return
null
;
}
}
public
static
boolean
fileExist
(
String
path
)
{
public
static
boolean
fileExist
(
String
path
)
{
List
<
String
>
ret
;
List
<
String
>
ret
;
ret
=
Shell
.
sh
(
"if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
);
ret
=
Shell
.
sh
(
"if [ -f "
+
path
+
" ]; then echo true; else echo false; fi"
);
...
...
app/src/main/res/layout/magisk_fragment.xml
View file @
dc06a132
...
@@ -11,12 +11,19 @@
...
@@ -11,12 +11,19 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<ProgressBar
android:id=
"@+id/progressBar"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
/>
<android.support.v7.widget.CardView
<android.support.v7.widget.CardView
android:id=
"@+id/rootSwitchView"
android:id=
"@+id/rootSwitchView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:elevation=
"2dp"
android:elevation=
"2dp"
app:cardCornerRadius=
"0dp"
>
app:cardCornerRadius=
"0dp"
android:visibility=
"gone"
>
<Switch
<Switch
android:id=
"@+id/root_toggle"
android:id=
"@+id/root_toggle"
...
@@ -35,7 +42,8 @@
...
@@ -35,7 +42,8 @@
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"1dp"
android:layout_marginTop=
"1dp"
android:elevation=
"2dp"
android:elevation=
"2dp"
app:cardCornerRadius=
"0dp"
>
app:cardCornerRadius=
"0dp"
android:visibility=
"gone"
>
<Switch
<Switch
android:id=
"@+id/selinux_toggle"
android:id=
"@+id/selinux_toggle"
...
@@ -49,13 +57,15 @@
...
@@ -49,13 +57,15 @@
</android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
<android.support.v7.widget.CardView
android:id=
"@+id/magiskStatusView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:layout_marginLeft=
"5dip"
android:layout_marginLeft=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginTop=
"6dp"
android:layout_marginTop=
"6dp"
app:cardUseCompatPadding=
"true"
>
app:cardUseCompatPadding=
"true"
android:visibility=
"gone"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -92,13 +102,15 @@
...
@@ -92,13 +102,15 @@
</android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
<android.support.v7.widget.CardView
android:id=
"@+id/rootStatusView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:layout_marginLeft=
"5dip"
android:layout_marginLeft=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginTop=
"6dp"
android:layout_marginTop=
"6dp"
app:cardUseCompatPadding=
"true"
>
app:cardUseCompatPadding=
"true"
android:visibility=
"gone"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -134,13 +146,15 @@
...
@@ -134,13 +146,15 @@
</android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
<android.support.v7.widget.CardView
android:id=
"@+id/safetynetStatusView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:layout_marginLeft=
"5dip"
android:layout_marginLeft=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginTop=
"6dp"
android:layout_marginTop=
"6dp"
app:cardUseCompatPadding=
"true"
>
app:cardUseCompatPadding=
"true"
android:visibility=
"gone"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
@@ -168,13 +182,15 @@
...
@@ -168,13 +182,15 @@
</android.support.v7.widget.CardView>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
<android.support.v7.widget.CardView
android:id=
"@+id/selinuxStatusView"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginBottom=
"4dp"
android:layout_marginLeft=
"5dip"
android:layout_marginLeft=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginRight=
"5dip"
android:layout_marginTop=
"6dp"
android:layout_marginTop=
"6dp"
app:cardUseCompatPadding=
"true"
>
app:cardUseCompatPadding=
"true"
android:visibility=
"gone"
>
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
app/src/main/res/values/colors.xml
View file @
dc06a132
...
@@ -10,5 +10,6 @@
...
@@ -10,5 +10,6 @@
<color
name=
"red500"
>
#F44336
</color>
<color
name=
"red500"
>
#F44336
</color>
<color
name=
"green500"
>
#4CAF50
</color>
<color
name=
"green500"
>
#4CAF50
</color>
<color
name=
"grey500"
>
#9E9E9E
</color>
<color
name=
"grey500"
>
#9E9E9E
</color>
<color
name=
"lime500"
>
#CDDC39
</color>
</resources>
</resources>
app/src/main/res/values/strings.xml
View file @
dc06a132
<resources>
<resources>
<string
name=
"app_name"
>
Magisk Manager
</string>
<string
name=
"app_name"
>
Magisk Manager
</string>
<string
name=
"magisk_version"
>
Installed Magisk v%1$s
</string>
<string
name=
"magisk_version_error"
>
Have you installed Magisk?
</string>
<string
name=
"root_error"
>
Root Error
</string>
<string
name=
"root_error_info"
>
Safety Net Status Unknown
</string>
<string
name=
"root_none"
>
Not Rooted
</string>
<string
name=
"root_none_info"
>
Safety Net (Android Pay) should work
</string>
<string
name=
"root_mounted"
>
Root mounted
</string>
<string
name=
"root_mounted"
>
Root mounted
</string>
<string
name=
"root_mounted_info"
>
Root mounted and enabled. Safety Net (Android Pay) will NOT work
</string>
<string
name=
"root_mounted_info"
>
Root mounted and enabled. Safety Net (Android Pay) will NOT work
</string>
<string
name=
"root_unmounted"
>
Root not mounted
</string>
<string
name=
"root_unmounted"
>
Root not mounted
</string>
<string
name=
"root_unmounted_info"
>
Safety Net (Android Pay) should work, but no root temporarily
</string>
<string
name=
"root_unmounted_info"
>
Safety Net (Android Pay) should work, but no root temporarily
</string>
<string
name=
"root_system"
>
Improperly Installed
</string>
<string
name=
"root_system_info"
>
Root improperly installed. Safety Net (Android Pay) will NOT work, and impossible to toggle
</string>
<string
name=
"selinux_error_info"
>
SELinux Status Unknown
</string>
<string
name=
"selinux_enforcing_info"
>
SELinux is enforced
</string>
<string
name=
"selinux_enforcing_info"
>
SELinux is enforced
</string>
<string
name=
"selinux_permissive_info"
>
SELinux is permissive\nOnly turn off SELinux if necessary!
</string>
<string
name=
"selinux_permissive_info"
>
SELinux is permissive\nOnly turn off SELinux if necessary!
</string>
<string
name=
"selinux_samsung_info"
>
Samsung do not support switching SELinux status!
</string>
<string
name=
"root_toggle"
>
Root Toggle
</string>
<string
name=
"root_toggle"
>
Root Toggle
</string>
<string
name=
"selinux_toggle"
>
SeLinux Toggle
</string>
<string
name=
"selinux_toggle"
>
SELinux Toggle
</string>
<string
name=
"root_system"
>
Improperly Installed
</string>
<string
name=
"root_system_info"
>
Root improperly installed. Safety Net (Android Pay) will NOT work, and impossible to toggle
</string>
<string
name=
"root_none"
>
Not Rooted
</string>
<string
name=
"root_none_info"
>
Safety Net (Android Pay) should work
</string>
<string
name=
"magisk_version"
>
Installed Magisk v%1$s
</string>
<string
name=
"selinux_samsung"
>
Samsung do not support switching SELinux status!
</string>
<string
name=
"navigation_drawer_open"
>
Open navigation drawer
</string>
<string
name=
"navigation_drawer_open"
>
Open navigation drawer
</string>
<string
name=
"navigation_drawer_close"
>
Close navigation drawer
</string>
<string
name=
"navigation_drawer_close"
>
Close navigation drawer
</string>
...
...
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