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
d4a10e28
Commit
d4a10e28
authored
Sep 03, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Various adjustments
parent
4998ad6c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
184 additions
and
225 deletions
+184
-225
AboutActivity.java
app/src/main/java/com/topjohnwu/magisk/AboutActivity.java
+1
-1
FlashActivity.java
app/src/main/java/com/topjohnwu/magisk/FlashActivity.java
+1
-1
MagiskFragment.java
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
+52
-52
MagiskManager.java
app/src/main/java/com/topjohnwu/magisk/MagiskManager.java
+1
-1
MainActivity.java
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
+8
-8
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+26
-44
SplashActivity.java
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
+1
-1
SuLogFragment.java
app/src/main/java/com/topjohnwu/magisk/SuLogFragment.java
+4
-4
SuperuserFragment.java
...src/main/java/com/topjohnwu/magisk/SuperuserFragment.java
+3
-3
CheckUpdates.java
...c/main/java/com/topjohnwu/magisk/asyncs/CheckUpdates.java
+18
-18
DownloadBusybox.java
...ain/java/com/topjohnwu/magisk/asyncs/DownloadBusybox.java
+6
-4
FlashZip.java
app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java
+8
-8
HideManager.java
...rc/main/java/com/topjohnwu/magisk/asyncs/HideManager.java
+9
-9
InstallMagisk.java
.../main/java/com/topjohnwu/magisk/asyncs/InstallMagisk.java
+5
-5
LoadModules.java
...rc/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java
+7
-7
MarkDownWindow.java
...main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java
+3
-6
UpdateRepos.java
...rc/main/java/com/topjohnwu/magisk/asyncs/UpdateRepos.java
+3
-5
Activity.java
...c/main/java/com/topjohnwu/magisk/components/Activity.java
+1
-2
SnackbarMaker.java
...n/java/com/topjohnwu/magisk/components/SnackbarMaker.java
+1
-3
DownloadReceiver.java
...java/com/topjohnwu/magisk/receivers/DownloadReceiver.java
+1
-1
SuRequestActivity.java
...ava/com/topjohnwu/magisk/superuser/SuRequestActivity.java
+1
-1
ByteArrayInOutStream.java
...java/com/topjohnwu/magisk/utils/ByteArrayInOutStream.java
+0
-18
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+20
-20
WebService.java
app/src/main/java/com/topjohnwu/magisk/utils/WebService.java
+4
-3
No files found.
app/src/main/java/com/topjohnwu/magisk/AboutActivity.java
View file @
d4a10e28
...
...
@@ -42,7 +42,7 @@ public class AboutActivity extends Activity {
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
if
(
get
ApplicationContext
().
isDarkTheme
)
{
if
(
get
MagiskManager
().
isDarkTheme
)
{
setTheme
(
R
.
style
.
AppTheme_Transparent_Dark
);
}
setContentView
(
R
.
layout
.
activity_about
);
...
...
app/src/main/java/com/topjohnwu/magisk/FlashActivity.java
View file @
d4a10e28
...
...
@@ -88,7 +88,7 @@ public class FlashActivity extends Activity {
break
;
case
FLASH_MAGISK:
String
boot
=
intent
.
getStringExtra
(
SET_BOOT
);
if
(
get
ApplicationContext
().
remoteMagiskVersionCode
<
1370
)
{
if
(
get
MagiskManager
().
remoteMagiskVersionCode
<
1370
)
{
// Use legacy installation method
getShell
().
su_raw
(
"echo \"BOOTIMAGE="
+
boot
+
"\" > /dev/.magisk"
,
...
...
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
View file @
d4a10e28
This diff is collapsed.
Click to expand it.
app/src/main/java/com/topjohnwu/magisk/MagiskManager.java
View file @
d4a10e28
...
...
@@ -151,7 +151,7 @@ public class MagiskManager extends Application {
res
.
updateConfiguration
(
config
,
res
.
getDisplayMetrics
());
}
p
rivate
void
loadConfig
()
{
p
ublic
void
loadConfig
()
{
// Locale
defaultLocale
=
Locale
.
getDefault
();
setLocale
();
...
...
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
View file @
d4a10e28
...
...
@@ -38,11 +38,11 @@ public class MainActivity extends Activity
@Override
protected
void
onCreate
(
final
Bundle
savedInstanceState
)
{
get
ApplicationContext
().
startup
();
get
MagiskManager
().
startup
();
prefs
=
get
ApplicationContext
().
prefs
;
prefs
=
get
MagiskManager
().
prefs
;
if
(
get
ApplicationContext
().
isDarkTheme
)
{
if
(
get
MagiskManager
().
isDarkTheme
)
{
setTheme
(
R
.
style
.
AppTheme_Dark
);
}
super
.
onCreate
(
savedInstanceState
);
...
...
@@ -108,21 +108,21 @@ public class MainActivity extends Activity
@Override
public
Topic
[]
getSubscription
()
{
return
new
Topic
[]
{
get
ApplicationContext
().
reloadActivity
};
return
new
Topic
[]
{
get
MagiskManager
().
reloadActivity
};
}
public
void
checkHideSection
()
{
Menu
menu
=
navigationView
.
getMenu
();
menu
.
findItem
(
R
.
id
.
magiskhide
).
setVisible
(
Shell
.
rootAccess
()
&&
get
ApplicationContext
().
magiskVersionCode
>=
1300
Shell
.
rootAccess
()
&&
get
MagiskManager
().
magiskVersionCode
>=
1300
&&
prefs
.
getBoolean
(
"magiskhide"
,
false
));
menu
.
findItem
(
R
.
id
.
modules
).
setVisible
(
Shell
.
rootAccess
()
&&
get
ApplicationContext
().
magiskVersionCode
>=
0
);
Shell
.
rootAccess
()
&&
get
MagiskManager
().
magiskVersionCode
>=
0
);
menu
.
findItem
(
R
.
id
.
downloads
).
setVisible
(
Utils
.
checkNetworkStatus
(
this
)
&&
Shell
.
rootAccess
()
&&
get
ApplicationContext
().
magiskVersionCode
>=
0
);
Shell
.
rootAccess
()
&&
get
MagiskManager
().
magiskVersionCode
>=
0
);
menu
.
findItem
(
R
.
id
.
log
).
setVisible
(
Shell
.
rootAccess
());
menu
.
findItem
(
R
.
id
.
superuser
).
setVisible
(
Shell
.
rootAccess
()
&&
get
ApplicationContext
().
isSuClient
);
Shell
.
rootAccess
()
&&
get
MagiskManager
().
isSuClient
);
}
public
void
navigate
(
String
item
)
{
...
...
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
d4a10e28
...
...
@@ -36,7 +36,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
if
(
get
ApplicationContext
().
isDarkTheme
)
{
if
(
get
MagiskManager
().
isDarkTheme
)
{
setTheme
(
R
.
style
.
AppTheme_Transparent_Dark
);
}
...
...
@@ -68,7 +68,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
@Override
public
Topic
[]
getSubscription
()
{
return
new
Topic
[]
{
get
ApplicationContext
().
reloadActivity
};
return
new
Topic
[]
{
get
MagiskManager
().
reloadActivity
};
}
public
static
class
SettingsFragment
extends
PreferenceFragment
...
...
@@ -80,7 +80,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
private
ListPreference
updateChannel
,
suAccess
,
autoRes
,
suNotification
,
requestTimeout
,
multiuserMode
,
namespaceMode
;
private
MagiskManager
m
agiskManager
;
private
MagiskManager
m
m
;
private
PreferenceCategory
generalCatagory
;
@Override
...
...
@@ -89,7 +89,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
addPreferencesFromResource
(
R
.
xml
.
app_settings
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
prefScreen
=
getPreferenceScreen
();
m
agiskManager
=
Utils
.
getMagiskManager
(
getActivity
());
m
m
=
Utils
.
getMagiskManager
(
getActivity
());
generalCatagory
=
(
PreferenceCategory
)
findPreference
(
"general"
);
PreferenceCategory
magiskCategory
=
(
PreferenceCategory
)
findPreference
(
"magisk"
);
...
...
@@ -141,10 +141,10 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
prefScreen
.
removePreference
(
suCategory
);
generalCatagory
.
removePreference
(
hideManager
);
}
else
{
if
(!
m
agiskManager
.
isSuClient
)
{
if
(!
m
m
.
isSuClient
)
{
prefScreen
.
removePreference
(
suCategory
);
}
if
(
m
agiskManager
.
magiskVersionCode
<
1300
)
{
if
(
m
m
.
magiskVersionCode
<
1300
)
{
prefScreen
.
removePreference
(
magiskCategory
);
}
}
...
...
@@ -155,12 +155,12 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
if
(
isNew
)
{
lp
=
new
ListPreference
(
getActivity
());
}
CharSequence
[]
entries
=
new
CharSequence
[
m
agiskManager
.
locales
.
size
()
+
1
];
CharSequence
[]
entryValues
=
new
CharSequence
[
m
agiskManager
.
locales
.
size
()
+
1
];
CharSequence
[]
entries
=
new
CharSequence
[
m
m
.
locales
.
size
()
+
1
];
CharSequence
[]
entryValues
=
new
CharSequence
[
m
m
.
locales
.
size
()
+
1
];
entries
[
0
]
=
getString
(
R
.
string
.
system_default
);
entryValues
[
0
]
=
""
;
int
i
=
1
;
for
(
Locale
locale
:
m
agiskManager
.
locales
)
{
for
(
Locale
locale
:
m
m
.
locales
)
{
entries
[
i
]
=
locale
.
getDisplayName
(
locale
);
entryValues
[
i
++]
=
locale
.
toLanguageTag
();
}
...
...
@@ -196,9 +196,8 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
switch
(
key
)
{
case
"dark_theme"
:
enabled
=
prefs
.
getBoolean
(
"dark_theme"
,
false
);
if
(
magiskManager
.
isDarkTheme
!=
enabled
)
{
magiskManager
.
isDarkTheme
=
enabled
;
magiskManager
.
reloadActivity
.
publish
(
false
);
if
(
mm
.
isDarkTheme
!=
enabled
)
{
mm
.
reloadActivity
.
publish
(
false
);
}
break
;
case
"disable"
:
...
...
@@ -231,41 +230,24 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
}
break
;
case
"su_access"
:
magiskManager
.
suAccessState
=
Utils
.
getPrefsInt
(
prefs
,
"su_access"
);
magiskManager
.
suDB
.
setSettings
(
SuDatabaseHelper
.
ROOT_ACCESS
,
magiskManager
.
suAccessState
);
mm
.
suDB
.
setSettings
(
SuDatabaseHelper
.
ROOT_ACCESS
,
Utils
.
getPrefsInt
(
prefs
,
"su_access"
));
break
;
case
"multiuser_mode"
:
magiskManager
.
multiuserMode
=
Utils
.
getPrefsInt
(
prefs
,
"multiuser_mode"
);
magiskManager
.
suDB
.
setSettings
(
SuDatabaseHelper
.
MULTIUSER_MODE
,
magiskManager
.
multiuserMode
);
mm
.
suDB
.
setSettings
(
SuDatabaseHelper
.
MULTIUSER_MODE
,
Utils
.
getPrefsInt
(
prefs
,
"multiuser_mode"
));
break
;
case
"mnt_ns"
:
magiskManager
.
suNamespaceMode
=
Utils
.
getPrefsInt
(
prefs
,
"mnt_ns"
);
magiskManager
.
suDB
.
setSettings
(
SuDatabaseHelper
.
MNT_NS
,
magiskManager
.
suNamespaceMode
);
break
;
case
"su_request_timeout"
:
magiskManager
.
suRequestTimeout
=
Utils
.
getPrefsInt
(
prefs
,
"su_request_timeout"
);
break
;
case
"su_auto_response"
:
magiskManager
.
suResponseType
=
Utils
.
getPrefsInt
(
prefs
,
"su_auto_response"
);
break
;
case
"su_notification"
:
magiskManager
.
suNotificationType
=
Utils
.
getPrefsInt
(
prefs
,
"su_notification"
);
break
;
case
"developer_logging"
:
MagiskManager
.
devLogging
=
prefs
.
getBoolean
(
"developer_logging"
,
false
);
break
;
case
"shell_logging"
:
MagiskManager
.
shellLogging
=
prefs
.
getBoolean
(
"shell_logging"
,
false
);
mm
.
suDB
.
setSettings
(
SuDatabaseHelper
.
MNT_NS
,
Utils
.
getPrefsInt
(
prefs
,
"mnt_ns"
));
break
;
case
"locale"
:
m
agiskManager
.
setLocale
();
m
agiskManager
.
reloadActivity
.
publish
(
false
);
m
m
.
setLocale
();
m
m
.
reloadActivity
.
publish
(
false
);
break
;
case
"update_channel"
:
m
agiskManager
.
updateChannel
=
Utils
.
getPrefsInt
(
prefs
,
"update_channel"
);
new
CheckUpdates
(
m
agiskManager
,
true
).
exec
();
m
m
.
updateChannel
=
Utils
.
getPrefsInt
(
prefs
,
"update_channel"
);
new
CheckUpdates
(
m
m
,
true
).
exec
();
break
;
}
mm
.
loadConfig
();
setSummary
();
}
...
...
@@ -275,19 +257,19 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
private
void
setSummary
()
{
updateChannel
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
update_channel
)[
m
agiskManager
.
updateChannel
]);
.
getStringArray
(
R
.
array
.
update_channel
)[
m
m
.
updateChannel
]);
suAccess
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
su_access
)[
m
agiskManager
.
suAccessState
]);
.
getStringArray
(
R
.
array
.
su_access
)[
m
m
.
suAccessState
]);
autoRes
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
auto_response
)[
m
agiskManager
.
suResponseType
]);
.
getStringArray
(
R
.
array
.
auto_response
)[
m
m
.
suResponseType
]);
suNotification
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
su_notification
)[
m
agiskManager
.
suNotificationType
]);
.
getStringArray
(
R
.
array
.
su_notification
)[
m
m
.
suNotificationType
]);
requestTimeout
.
setSummary
(
getString
(
R
.
string
.
request_timeout_summary
,
prefs
.
getString
(
"su_request_timeout"
,
"10"
)));
multiuserMode
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
multiuser_summary
)[
m
agiskManager
.
multiuserMode
]);
.
getStringArray
(
R
.
array
.
multiuser_summary
)[
m
m
.
multiuserMode
]);
namespaceMode
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
namespace_summary
)[
m
agiskManager
.
suNamespaceMode
]);
.
getStringArray
(
R
.
array
.
namespace_summary
)[
m
m
.
suNamespaceMode
]);
}
@Override
...
...
@@ -297,7 +279,7 @@ public class SettingsActivity extends Activity implements Topic.Subscriber {
@Override
public
Topic
[]
getSubscription
()
{
return
new
Topic
[]
{
m
agiskManager
.
localeDone
};
return
new
Topic
[]
{
m
m
.
localeDone
};
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
View file @
d4a10e28
...
...
@@ -11,7 +11,7 @@ public class SplashActivity extends Activity {
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
get
ApplicationContext
().
startup
();
get
MagiskManager
().
startup
();
Intent
intent
=
new
Intent
(
this
,
MainActivity
.
class
);
String
section
=
getIntent
().
getStringExtra
(
MagiskManager
.
INTENT_SECTION
);
...
...
app/src/main/java/com/topjohnwu/magisk/SuLogFragment.java
View file @
d4a10e28
...
...
@@ -24,7 +24,7 @@ public class SuLogFragment extends Fragment {
@BindView
(
R
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
private
Unbinder
unbinder
;
private
MagiskManager
m
agiskManager
;
private
MagiskManager
m
m
;
private
SuLogAdapter
adapter
;
@Override
...
...
@@ -45,8 +45,8 @@ public class SuLogFragment extends Fragment {
// Inflate the layout for this fragment
View
v
=
inflater
.
inflate
(
R
.
layout
.
fragment_su_log
,
container
,
false
);
unbinder
=
ButterKnife
.
bind
(
this
,
v
);
m
agiskManager
=
getApplication
();
adapter
=
new
SuLogAdapter
(
m
agiskManager
.
suDB
);
m
m
=
getApplication
();
adapter
=
new
SuLogAdapter
(
m
m
.
suDB
);
recyclerView
.
setAdapter
(
adapter
);
updateList
();
...
...
@@ -73,7 +73,7 @@ public class SuLogFragment extends Fragment {
updateList
();
return
true
;
case
R
.
id
.
menu_clear
:
m
agiskManager
.
suDB
.
clearLogs
();
m
m
.
suDB
.
clearLogs
();
updateList
();
return
true
;
default
:
...
...
app/src/main/java/com/topjohnwu/magisk/SuperuserFragment.java
View file @
d4a10e28
...
...
@@ -32,15 +32,15 @@ public class SuperuserFragment extends Fragment {
unbinder
=
ButterKnife
.
bind
(
this
,
view
);
PackageManager
pm
=
getActivity
().
getPackageManager
();
MagiskManager
m
agiskManager
=
getApplication
();
MagiskManager
m
m
=
getApplication
();
List
<
Policy
>
policyList
=
m
agiskManager
.
suDB
.
getPolicyList
(
pm
);
List
<
Policy
>
policyList
=
m
m
.
suDB
.
getPolicyList
(
pm
);
if
(
policyList
.
size
()
==
0
)
{
emptyRv
.
setVisibility
(
View
.
VISIBLE
);
recyclerView
.
setVisibility
(
View
.
GONE
);
}
else
{
recyclerView
.
setAdapter
(
new
PolicyAdapter
(
policyList
,
m
agiskManager
.
suDB
,
pm
));
recyclerView
.
setAdapter
(
new
PolicyAdapter
(
policyList
,
m
m
.
suDB
,
pm
));
emptyRv
.
setVisibility
(
View
.
GONE
);
recyclerView
.
setVisibility
(
View
.
VISIBLE
);
}
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/CheckUpdates.java
View file @
d4a10e28
...
...
@@ -31,10 +31,10 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
null
;
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
null
;
String
jsonStr
;
switch
(
m
agiskManager
.
updateChannel
)
{
switch
(
m
m
.
updateChannel
)
{
case
STABLE_CHANNEL:
jsonStr
=
WebService
.
getString
(
STABLE_URL
);
break
;
...
...
@@ -47,30 +47,30 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
try
{
JSONObject
json
=
new
JSONObject
(
jsonStr
);
JSONObject
magisk
=
json
.
getJSONObject
(
"magisk"
);
m
agiskManager
.
remoteMagiskVersionString
=
magisk
.
getString
(
"version"
);
m
agiskManager
.
remoteMagiskVersionCode
=
magisk
.
getInt
(
"versionCode"
);
m
agiskManager
.
magiskLink
=
magisk
.
getString
(
"link"
);
m
agiskManager
.
releaseNoteLink
=
magisk
.
getString
(
"note"
);
m
m
.
remoteMagiskVersionString
=
magisk
.
getString
(
"version"
);
m
m
.
remoteMagiskVersionCode
=
magisk
.
getInt
(
"versionCode"
);
m
m
.
magiskLink
=
magisk
.
getString
(
"link"
);
m
m
.
releaseNoteLink
=
magisk
.
getString
(
"note"
);
JSONObject
manager
=
json
.
getJSONObject
(
"app"
);
m
agiskManager
.
remoteManagerVersionString
=
manager
.
getString
(
"version"
);
m
agiskManager
.
remoteManagerVersionCode
=
manager
.
getInt
(
"versionCode"
);
m
agiskManager
.
managerLink
=
manager
.
getString
(
"link"
);
m
m
.
remoteManagerVersionString
=
manager
.
getString
(
"version"
);
m
m
.
remoteManagerVersionCode
=
manager
.
getInt
(
"versionCode"
);
m
m
.
managerLink
=
manager
.
getString
(
"link"
);
}
catch
(
JSONException
ignored
)
{}
return
null
;
}
@Override
protected
void
onPostExecute
(
Void
v
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
;
if
(
showNotification
&&
m
agiskManager
.
updateNotification
)
{
if
(
BuildConfig
.
VERSION_CODE
<
m
agiskManager
.
remoteManagerVersionCode
)
{
Utils
.
showManagerUpdate
(
m
agiskManager
);
}
else
if
(
m
agiskManager
.
magiskVersionCode
<
magiskManager
.
remoteMagiskVersionCode
)
{
Utils
.
showMagiskUpdate
(
m
agiskManager
);
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
;
if
(
showNotification
&&
m
m
.
updateNotification
)
{
if
(
BuildConfig
.
VERSION_CODE
<
m
m
.
remoteManagerVersionCode
)
{
Utils
.
showManagerUpdate
(
m
m
);
}
else
if
(
m
m
.
magiskVersionCode
<
mm
.
remoteMagiskVersionCode
)
{
Utils
.
showMagiskUpdate
(
m
m
);
}
}
m
agiskManager
.
updateCheckDone
.
publish
();
m
m
.
updateCheckDone
.
publish
();
super
.
onPostExecute
(
v
);
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/DownloadBusybox.java
View file @
d4a10e28
...
...
@@ -7,6 +7,7 @@ import com.topjohnwu.magisk.MagiskManager;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.WebService
;
import
java.io.BufferedInputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
...
...
@@ -37,13 +38,14 @@ public class DownloadBusybox extends ParallelTask<Void, Void, Void> {
null
);
if
(
in
==
null
)
throw
new
IOException
();
BufferedInputStream
bis
=
new
BufferedInputStream
(
in
);
byte
[]
buffer
=
new
byte
[
4096
];
int
read
;
while
((
read
=
in
.
read
(
buffer
))
!=
-
1
)
{
out
.
write
(
buffer
,
0
,
read
);
int
len
;
while
((
len
=
bis
.
read
(
buffer
))
!=
-
1
)
{
out
.
write
(
buffer
,
0
,
len
);
}
out
.
close
();
in
.
close
();
bis
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java
View file @
d4a10e28
...
...
@@ -58,14 +58,14 @@ public class FlashZip extends ParallelTask<Void, Void, Integer> {
@Override
protected
Integer
doInBackground
(
Void
...
voids
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
-
1
;
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
-
1
;
try
{
mList
.
add
(
"- Copying zip to temp directory"
);
mCachedFile
.
delete
();
try
(
InputStream
in
=
m
agiskManager
.
getContentResolver
().
openInputStream
(
mUri
);
InputStream
in
=
m
m
.
getContentResolver
().
openInputStream
(
mUri
);
OutputStream
out
=
new
FileOutputStream
(
mCachedFile
)
)
{
if
(
in
==
null
)
throw
new
FileNotFoundException
();
...
...
@@ -97,23 +97,23 @@ public class FlashZip extends ParallelTask<Void, Void, Integer> {
// -1 = error, manual install; 0 = invalid zip; 1 = success
@Override
protected
void
onPostExecute
(
Integer
result
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
;
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
;
getShell
().
su_raw
(
"rm -rf "
+
mCachedFile
.
getParent
(),
"rm -rf "
+
MagiskManager
.
TMP_FOLDER_PATH
);
switch
(
result
)
{
case
-
1
:
mList
.
add
(
m
agiskManager
.
getString
(
R
.
string
.
install_error
));
mList
.
add
(
m
m
.
getString
(
R
.
string
.
install_error
));
Utils
.
showUriSnack
(
getActivity
(),
mUri
);
break
;
case
0
:
mList
.
add
(
m
agiskManager
.
getString
(
R
.
string
.
invalid_zip
));
mList
.
add
(
m
m
.
getString
(
R
.
string
.
invalid_zip
));
break
;
case
1
:
// Success
new
LoadModules
(
m
agiskManager
).
exec
();
new
LoadModules
(
m
m
).
exec
();
break
;
}
super
.
onPostExecute
(
result
);
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/HideManager.java
View file @
d4a10e28
...
...
@@ -27,14 +27,14 @@ public class HideManager extends ParallelTask<Void, Void, Boolean> {
@Override
protected
Boolean
doInBackground
(
Void
...
voids
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
false
;
// Generate a new unhide app with random package name
File
unhideAPK
=
new
File
(
Environment
.
getExternalStorageDirectory
()
+
"/MagiskManager"
,
"unhide.apk"
);
unhideAPK
.
getParentFile
().
mkdirs
();
String
pkg
=
ZipUtils
.
generateUnhide
(
m
agiskManager
,
unhideAPK
);
String
pkg
=
ZipUtils
.
generateUnhide
(
m
m
,
unhideAPK
);
// Install the application
List
<
String
>
ret
=
getShell
().
su
(
"pm install "
+
unhideAPK
+
">/dev/null && echo true || echo false"
);
...
...
@@ -44,30 +44,30 @@ public class HideManager extends ParallelTask<Void, Void, Boolean> {
try
{
// Allow the application to gain root by default
PackageManager
pm
=
m
agiskManager
.
getPackageManager
();
PackageManager
pm
=
m
m
.
getPackageManager
();
int
uid
=
pm
.
getApplicationInfo
(
pkg
,
0
).
uid
;
Policy
policy
=
new
Policy
(
uid
,
pm
);
policy
.
policy
=
Policy
.
ALLOW
;
policy
.
notification
=
false
;
policy
.
logging
=
false
;
m
agiskManager
.
suDB
.
addPolicy
(
policy
);
m
m
.
suDB
.
addPolicy
(
policy
);
}
catch
(
PackageManager
.
NameNotFoundException
e
)
{
e
.
printStackTrace
();
return
false
;
}
// Hide myself!
getShell
().
su_raw
(
"pm hide "
+
m
agiskManager
.
getPackageName
());
getShell
().
su_raw
(
"pm hide "
+
m
m
.
getPackageName
());
return
true
;
}
@Override
protected
void
onPostExecute
(
Boolean
b
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
;
if
(!
b
)
{
m
agiskManager
.
toast
(
R
.
string
.
hide_manager_fail_toast
,
Toast
.
LENGTH_LONG
);
m
m
.
toast
(
R
.
string
.
hide_manager_fail_toast
,
Toast
.
LENGTH_LONG
);
}
super
.
onPostExecute
(
b
);
}
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/InstallMagisk.java
View file @
d4a10e28
...
...
@@ -64,10 +64,10 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
@Override
protected
Boolean
doInBackground
(
Void
...
voids
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
false
;
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
false
;
File
install
=
new
File
(
m
agiskManager
.
getApplicationInfo
().
dataDir
,
"install"
);
File
install
=
new
File
(
m
m
.
getApplicationInfo
().
dataDir
,
"install"
);
getShell
().
sh_raw
(
"rm -rf "
+
install
);
List
<
String
>
abis
=
Arrays
.
asList
(
Build
.
SUPPORTED_ABIS
);
...
...
@@ -81,7 +81,7 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
try
{
// Unzip files
mList
.
add
(
"- Extracting files"
);
try
(
InputStream
in
=
m
agiskManager
.
getContentResolver
().
openInputStream
(
mZip
))
{
try
(
InputStream
in
=
m
m
.
getContentResolver
().
openInputStream
(
mZip
))
{
if
(
in
==
null
)
throw
new
FileNotFoundException
();
BufferedInputStream
buf
=
new
BufferedInputStream
(
in
);
buf
.
mark
(
Integer
.
MAX_VALUE
);
...
...
@@ -106,7 +106,7 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
boot
=
new
File
(
install
,
"boot.img"
);
// Copy boot image to local
try
(
InputStream
in
=
m
agiskManager
.
getContentResolver
().
openInputStream
(
mBootImg
);
InputStream
in
=
m
m
.
getContentResolver
().
openInputStream
(
mBootImg
);
OutputStream
out
=
new
FileOutputStream
(
boot
);
)
{
if
(
in
==
null
)
throw
new
FileNotFoundException
();
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java
View file @
d4a10e28
...
...
@@ -17,17 +17,17 @@ public class LoadModules extends ParallelTask<Void, Void, Void> {
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
null
;
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
null
;
Logger
.
dev
(
"LoadModules: Loading modules"
);
m
agiskManager
.
moduleMap
=
new
ValueSortedMap
<>();
m
m
.
moduleMap
=
new
ValueSortedMap
<>();
for
(
String
path
:
Utils
.
getModList
(
getShell
(),
MagiskManager
.
MAGISK_PATH
))
{
Logger
.
dev
(
"LoadModules: Adding modules from "
+
path
);
try
{
Module
module
=
new
Module
(
getShell
(),
path
);
m
agiskManager
.
moduleMap
.
put
(
module
.
getId
(),
module
);
m
m
.
moduleMap
.
put
(
module
.
getId
(),
module
);
}
catch
(
BaseModule
.
CacheModException
ignored
)
{}
}
...
...
@@ -37,9 +37,9 @@ public class LoadModules extends ParallelTask<Void, Void, Void> {
@Override
protected
void
onPostExecute
(
Void
v
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
;
m
agiskManager
.
moduleLoadDone
.
publish
();
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
;
m
m
.
moduleLoadDone
.
publish
();
super
.
onPostExecute
(
v
);
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java
View file @
d4a10e28
...
...
@@ -27,7 +27,9 @@ public class MarkDownWindow extends ParallelTask<Void, Void, String> {
Parser
parser
=
Parser
.
builder
().
build
();
HtmlRenderer
renderer
=
HtmlRenderer
.
builder
().
build
();
Node
doc
=
parser
.
parse
(
md
);
return
renderer
.
render
(
doc
);
return
String
.
format
(
"<link rel='stylesheet' type='text/css' href='file:///android_asset/%s.css'/> %s"
,
getMagiskManager
().
isDarkTheme
?
"dark"
:
"light"
,
renderer
.
render
(
doc
));
}
@Override
...
...
@@ -36,11 +38,6 @@ public class MarkDownWindow extends ParallelTask<Void, Void, String> {
alert
.
setTitle
(
mTitle
);
WebView
wv
=
new
WebView
(
getActivity
());
html
=
String
.
format
(
"<link rel='stylesheet' type='text/css' href='file:///android_asset/%s.css'/> %s"
,
getMagiskManager
().
isDarkTheme
?
"dark"
:
"light"
,
html
);
wv
.
loadDataWithBaseURL
(
"fake://"
,
html
,
"text/html"
,
"UTF-8"
,
null
);
alert
.
setView
(
wv
);
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/UpdateRepos.java
View file @
d4a10e28
...
...
@@ -156,8 +156,6 @@ public class UpdateRepos extends ParallelTask<Void, Void, Void> {
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
MagiskManager
magiskManager
=
getMagiskManager
();
if
(
magiskManager
==
null
)
return
null
;
Logger
.
dev
(
"UpdateRepos: Loading repos"
);
cached
=
repoDB
.
getRepoIDList
();
...
...
@@ -184,9 +182,9 @@ public class UpdateRepos extends ParallelTask<Void, Void, Void> {
@Override
protected
void
onPostExecute
(
Void
v
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
();
if
(
m
agiskManager
==
null
)
return
;
m
agiskManager
.
repoLoadDone
.
publish
();
MagiskManager
m
m
=
getMagiskManager
();
if
(
m
m
==
null
)
return
;
m
m
.
repoLoadDone
.
publish
();
super
.
onPostExecute
(
v
);
}
}
app/src/main/java/com/topjohnwu/magisk/components/Activity.java
View file @
d4a10e28
...
...
@@ -54,8 +54,7 @@ public class Activity extends AppCompatActivity {
permissionGrantCallback
=
callback
;
}
@Override
public
MagiskManager
getApplicationContext
()
{
public
MagiskManager
getMagiskManager
()
{
return
(
MagiskManager
)
super
.
getApplicationContext
();
}
...
...
app/src/main/java/com/topjohnwu/magisk/components/SnackbarMaker.java
View file @
d4a10e28
...
...
@@ -6,8 +6,6 @@ import android.support.design.widget.Snackbar;
import
android.view.View
;
import
android.widget.TextView
;
import
butterknife.ButterKnife
;
public
class
SnackbarMaker
{
public
static
Snackbar
make
(
Activity
activity
,
CharSequence
text
,
int
duration
)
{
...
...
@@ -32,7 +30,7 @@ public class SnackbarMaker {
}
private
static
void
setup
(
Snackbar
snack
)
{
TextView
text
=
ButterKnife
.
findById
(
snack
.
getView
(),
android
.
support
.
design
.
R
.
id
.
snackbar_text
);
TextView
text
=
snack
.
getView
().
findViewById
(
android
.
support
.
design
.
R
.
id
.
snackbar_text
);
text
.
setMaxLines
(
Integer
.
MAX_VALUE
);
}
...
...
app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java
View file @
d4a10e28
...
...
@@ -34,7 +34,7 @@ public abstract class DownloadReceiver extends BroadcastReceiver {
onDownloadDone
(
uri
);
break
;
default
:
Toast
.
makeText
(
context
,
R
.
string
.
download_file_error
,
Toast
.
LENGTH_LONG
).
show
(
);
Utils
.
getMagiskManager
(
context
).
toast
(
R
.
string
.
download_file_error
,
Toast
.
LENGTH_LONG
);
break
;
}
context
.
unregisterReceiver
(
this
);
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/SuRequestActivity.java
View file @
d4a10e28
...
...
@@ -59,7 +59,7 @@ public class SuRequestActivity extends Activity {
supportRequestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
pm
=
getPackageManager
();
magiskManager
=
get
ApplicationContext
();
magiskManager
=
get
MagiskManager
();
Intent
intent
=
getIntent
();
socketPath
=
intent
.
getStringExtra
(
"socket"
);
...
...
app/src/main/java/com/topjohnwu/magisk/utils/ByteArrayInOutStream.java
deleted
100644 → 0
View file @
4998ad6c
package
com
.
topjohnwu
.
magisk
.
utils
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
public
class
ByteArrayInOutStream
extends
ByteArrayOutputStream
{
public
ByteArrayInputStream
getInputStream
()
{
ByteArrayInputStream
in
=
new
ByteArrayInputStream
(
buf
,
0
,
count
);
count
=
0
;
buf
=
new
byte
[
32
];
return
in
;
}
public
void
setBuffer
(
byte
[]
buffer
)
{
buf
=
buffer
;
count
=
buffer
.
length
;
}
}
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
d4a10e28
...
...
@@ -148,10 +148,10 @@ public class Utils {
}
public
static
void
clearRepoCache
(
Context
context
)
{
MagiskManager
m
agiskManager
=
getMagiskManager
(
context
);
m
agiskManager
.
prefs
.
edit
().
remove
(
UpdateRepos
.
ETAG_KEY
).
apply
();
m
agiskManager
.
repoDB
.
clearRepo
();
m
agiskManager
.
toast
(
R
.
string
.
repo_cache_cleared
,
Toast
.
LENGTH_SHORT
);
MagiskManager
m
m
=
getMagiskManager
(
context
);
m
m
.
prefs
.
edit
().
remove
(
UpdateRepos
.
ETAG_KEY
).
apply
();
m
m
.
repoDB
.
clearRepo
();
m
m
.
toast
(
R
.
string
.
repo_cache_cleared
,
Toast
.
LENGTH_SHORT
);
}
public
static
String
getNameFromUri
(
Context
context
,
Uri
uri
)
{
...
...
@@ -185,41 +185,41 @@ public class Utils {
return
networkInfo
!=
null
&&
networkInfo
.
isConnected
();
}
public
static
void
showMagiskUpdate
(
MagiskManager
m
agiskManager
)
{
NotificationCompat
.
Builder
builder
=
new
NotificationCompat
.
Builder
(
m
agiskManager
,
MagiskManager
.
NOTIFICATION_CHANNEL
);
public
static
void
showMagiskUpdate
(
MagiskManager
m
m
)
{
NotificationCompat
.
Builder
builder
=
new
NotificationCompat
.
Builder
(
m
m
,
MagiskManager
.
NOTIFICATION_CHANNEL
);
builder
.
setSmallIcon
(
R
.
drawable
.
ic_magisk
)
.
setContentTitle
(
m
agiskManager
.
getString
(
R
.
string
.
magisk_update_title
))
.
setContentText
(
m
agiskManager
.
getString
(
R
.
string
.
magisk_update_available
,
magiskManager
.
remoteMagiskVersionString
))
.
setContentTitle
(
m
m
.
getString
(
R
.
string
.
magisk_update_title
))
.
setContentText
(
m
m
.
getString
(
R
.
string
.
magisk_update_available
,
mm
.
remoteMagiskVersionString
))
.
setVibrate
(
new
long
[]{
0
,
100
,
100
,
100
})
.
setAutoCancel
(
true
);
Intent
intent
=
new
Intent
(
m
agiskManager
,
SplashActivity
.
class
);
Intent
intent
=
new
Intent
(
m
m
,
SplashActivity
.
class
);
intent
.
putExtra
(
MagiskManager
.
INTENT_SECTION
,
"magisk"
);
TaskStackBuilder
stackBuilder
=
TaskStackBuilder
.
create
(
m
agiskManager
);
TaskStackBuilder
stackBuilder
=
TaskStackBuilder
.
create
(
m
m
);
stackBuilder
.
addParentStack
(
SplashActivity
.
class
);
stackBuilder
.
addNextIntent
(
intent
);
PendingIntent
pendingIntent
=
stackBuilder
.
getPendingIntent
(
MAGISK_UPDATE_NOTIFICATION_ID
,
PendingIntent
.
FLAG_UPDATE_CURRENT
);
builder
.
setContentIntent
(
pendingIntent
);
NotificationManager
notificationManager
=
(
NotificationManager
)
m
agiskManager
.
getSystemService
(
Context
.
NOTIFICATION_SERVICE
);
(
NotificationManager
)
m
m
.
getSystemService
(
Context
.
NOTIFICATION_SERVICE
);
notificationManager
.
notify
(
MAGISK_UPDATE_NOTIFICATION_ID
,
builder
.
build
());
}
public
static
void
showManagerUpdate
(
MagiskManager
m
agiskManager
)
{
NotificationCompat
.
Builder
builder
=
new
NotificationCompat
.
Builder
(
m
agiskManager
,
MagiskManager
.
NOTIFICATION_CHANNEL
);
public
static
void
showManagerUpdate
(
MagiskManager
m
m
)
{
NotificationCompat
.
Builder
builder
=
new
NotificationCompat
.
Builder
(
m
m
,
MagiskManager
.
NOTIFICATION_CHANNEL
);
builder
.
setSmallIcon
(
R
.
drawable
.
ic_magisk
)
.
setContentTitle
(
m
agiskManager
.
getString
(
R
.
string
.
manager_update_title
))
.
setContentText
(
m
agiskManager
.
getString
(
R
.
string
.
manager_download_install
))
.
setContentTitle
(
m
m
.
getString
(
R
.
string
.
manager_update_title
))
.
setContentText
(
m
m
.
getString
(
R
.
string
.
manager_download_install
))
.
setVibrate
(
new
long
[]{
0
,
100
,
100
,
100
})
.
setAutoCancel
(
true
);
Intent
intent
=
new
Intent
(
m
agiskManager
,
ManagerUpdate
.
class
);
intent
.
putExtra
(
MagiskManager
.
INTENT_LINK
,
m
agiskManager
.
managerLink
);
intent
.
putExtra
(
MagiskManager
.
INTENT_VERSION
,
m
agiskManager
.
remoteManagerVersionString
);
PendingIntent
pendingIntent
=
PendingIntent
.
getBroadcast
(
m
agiskManager
,
Intent
intent
=
new
Intent
(
m
m
,
ManagerUpdate
.
class
);
intent
.
putExtra
(
MagiskManager
.
INTENT_LINK
,
m
m
.
managerLink
);
intent
.
putExtra
(
MagiskManager
.
INTENT_VERSION
,
m
m
.
remoteManagerVersionString
);
PendingIntent
pendingIntent
=
PendingIntent
.
getBroadcast
(
m
m
,
APK_UPDATE_NOTIFICATION_ID
,
intent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
);
builder
.
setContentIntent
(
pendingIntent
);
NotificationManager
notificationManager
=
(
NotificationManager
)
m
agiskManager
.
getSystemService
(
Context
.
NOTIFICATION_SERVICE
);
(
NotificationManager
)
m
m
.
getSystemService
(
Context
.
NOTIFICATION_SERVICE
);
notificationManager
.
notify
(
APK_UPDATE_NOTIFICATION_ID
,
builder
.
build
());
}
...
...
app/src/main/java/com/topjohnwu/magisk/utils/WebService.java
View file @
d4a10e28
...
...
@@ -24,11 +24,12 @@ public class WebService {
InputStream
in
=
request
(
GET
,
url
,
header
);
if
(
in
==
null
)
return
""
;
BufferedReader
br
=
new
BufferedReader
(
new
InputStreamReader
(
in
));
String
line
;
int
len
;
StringBuilder
builder
=
new
StringBuilder
();
char
buf
[]
=
new
char
[
4096
];
try
{
while
((
l
ine
=
br
.
readLine
())
!=
null
)
{
builder
.
append
(
line
).
append
(
"\n"
);
while
((
l
en
=
br
.
read
(
buf
))
!=
-
1
)
{
builder
.
append
(
buf
,
0
,
len
);
}
in
.
close
();
}
catch
(
IOException
e
)
{
...
...
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