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
2fa5e467
Commit
2fa5e467
authored
Dec 25, 2016
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CallbackHandler to manage asyncs
parent
57af984e
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
129 additions
and
132 deletions
+129
-132
MainActivity.java
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
+0
-2
ModulesFragment.java
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
+15
-20
ReposFragment.java
app/src/main/java/com/topjohnwu/magisk/ReposFragment.java
+16
-20
SplashActivity.java
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
+4
-9
StatusFragment.java
app/src/main/java/com/topjohnwu/magisk/StatusFragment.java
+33
-52
Async.java
app/src/main/java/com/topjohnwu/magisk/utils/Async.java
+17
-26
CallbackHandler.java
...main/java/com/topjohnwu/magisk/utils/CallbackHandler.java
+43
-0
SafetyNetHelper.java
...main/java/com/topjohnwu/magisk/utils/SafetyNetHelper.java
+1
-3
No files found.
app/src/main/java/com/topjohnwu/magisk/MainActivity.java
View file @
2fa5e467
...
@@ -12,7 +12,6 @@ import android.preference.PreferenceManager;
...
@@ -12,7 +12,6 @@ import android.preference.PreferenceManager;
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.ActivityCompat
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.view.GravityCompat
;
import
android.support.v4.view.GravityCompat
;
import
android.support.v4.widget.DrawerLayout
;
import
android.support.v4.widget.DrawerLayout
;
...
@@ -24,7 +23,6 @@ import android.view.MenuItem;
...
@@ -24,7 +23,6 @@ import android.view.MenuItem;
import
android.view.View
;
import
android.view.View
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Shell
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
...
...
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
View file @
2fa5e467
...
@@ -19,6 +19,7 @@ import com.github.clans.fab.FloatingActionButton;
...
@@ -19,6 +19,7 @@ import com.github.clans.fab.FloatingActionButton;
import
com.topjohnwu.magisk.adapters.ModulesAdapter
;
import
com.topjohnwu.magisk.adapters.ModulesAdapter
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.CallbackHandler
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.ModuleHelper
;
import
com.topjohnwu.magisk.utils.ModuleHelper
;
...
@@ -28,7 +29,10 @@ import java.util.List;
...
@@ -28,7 +29,10 @@ import java.util.List;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
public
class
ModulesFragment
extends
Fragment
{
public
class
ModulesFragment
extends
Fragment
implements
CallbackHandler
.
EventListener
{
public
static
final
CallbackHandler
.
Event
moduleLoadDone
=
new
CallbackHandler
.
Event
();
private
static
final
int
FETCH_ZIP_CODE
=
2
;
private
static
final
int
FETCH_ZIP_CODE
=
2
;
@BindView
(
R
.
id
.
swipeRefreshLayout
)
SwipeRefreshLayout
mSwipeRefreshLayout
;
@BindView
(
R
.
id
.
swipeRefreshLayout
)
SwipeRefreshLayout
mSwipeRefreshLayout
;
...
@@ -36,10 +40,8 @@ public class ModulesFragment extends Fragment {
...
@@ -36,10 +40,8 @@ public class ModulesFragment extends Fragment {
@BindView
(
R
.
id
.
empty_rv
)
TextView
emptyTv
;
@BindView
(
R
.
id
.
empty_rv
)
TextView
emptyTv
;
@BindView
(
R
.
id
.
fab
)
FloatingActionButton
fabio
;
@BindView
(
R
.
id
.
fab
)
FloatingActionButton
fabio
;
private
SharedPreferences
prefs
;
private
List
<
Module
>
listModules
=
new
ArrayList
<>();
private
List
<
Module
>
listModules
=
new
ArrayList
<>();
private
View
mView
;
private
View
mView
;
private
SharedPreferences
.
OnSharedPreferenceChangeListener
listener
;
@Nullable
@Nullable
@Override
@Override
...
@@ -53,30 +55,24 @@ public class ModulesFragment extends Fragment {
...
@@ -53,30 +55,24 @@ public class ModulesFragment extends Fragment {
startActivityForResult
(
intent
,
FETCH_ZIP_CODE
);
startActivityForResult
(
intent
,
FETCH_ZIP_CODE
);
});
});
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
recyclerView
.
setVisibility
(
View
.
GONE
);
recyclerView
.
setVisibility
(
View
.
GONE
);
prefs
.
edit
().
putBoolean
(
"module_done"
,
false
).
apply
();
new
Async
.
LoadModules
().
exec
();
new
Async
.
LoadModules
(
prefs
).
exec
();
});
});
if
(
prefs
.
getBoolean
(
"module_done"
,
false
)
)
{
if
(
moduleLoadDone
.
isTriggered
)
{
updateUI
();
updateUI
();
}
}
listener
=
(
pref
,
s
)
->
{
if
(
s
.
equals
(
"module_done"
))
{
if
(
pref
.
getBoolean
(
s
,
false
))
{
Logger
.
dev
(
"ModulesFragment: UI refresh triggered"
);
updateUI
();
}
}
};
return
mView
;
return
mView
;
}
}
@Override
public
void
onTrigger
(
CallbackHandler
.
Event
event
)
{
Logger
.
dev
(
"ModulesFragment: UI refresh triggered"
);
updateUI
();
}
@Override
@Override
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
if
(
requestCode
==
FETCH_ZIP_CODE
&&
resultCode
==
Activity
.
RESULT_OK
&&
data
!=
null
)
{
if
(
requestCode
==
FETCH_ZIP_CODE
&&
resultCode
==
Activity
.
RESULT_OK
&&
data
!=
null
)
{
...
@@ -91,14 +87,14 @@ public class ModulesFragment extends Fragment {
...
@@ -91,14 +87,14 @@ public class ModulesFragment extends Fragment {
public
void
onResume
()
{
public
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
mView
=
this
.
getView
();
mView
=
this
.
getView
();
prefs
.
registerOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
register
(
moduleLoadDone
,
this
);
getActivity
().
setTitle
(
R
.
string
.
modules
);
getActivity
().
setTitle
(
R
.
string
.
modules
);
}
}
@Override
@Override
public
void
onDestroy
()
{
public
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
prefs
.
unregisterOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
unRegister
(
moduleLoadDone
,
this
);
}
}
private
void
updateUI
()
{
private
void
updateUI
()
{
...
@@ -113,5 +109,4 @@ public class ModulesFragment extends Fragment {
...
@@ -113,5 +109,4 @@ public class ModulesFragment extends Fragment {
}
}
mSwipeRefreshLayout
.
setRefreshing
(
false
);
mSwipeRefreshLayout
.
setRefreshing
(
false
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/ReposFragment.java
View file @
2fa5e467
...
@@ -20,6 +20,7 @@ import com.topjohnwu.magisk.adapters.ReposAdapter;
...
@@ -20,6 +20,7 @@ import com.topjohnwu.magisk.adapters.ReposAdapter;
import
com.topjohnwu.magisk.adapters.SimpleSectionedRecyclerViewAdapter
;
import
com.topjohnwu.magisk.adapters.SimpleSectionedRecyclerViewAdapter
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.CallbackHandler
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.ModuleHelper
;
import
com.topjohnwu.magisk.utils.ModuleHelper
;
...
@@ -29,7 +30,9 @@ import java.util.List;
...
@@ -29,7 +30,9 @@ import java.util.List;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
public
class
ReposFragment
extends
Fragment
{
public
class
ReposFragment
extends
Fragment
implements
CallbackHandler
.
EventListener
{
public
static
final
CallbackHandler
.
Event
repoLoadDone
=
new
CallbackHandler
.
Event
();
@BindView
(
R
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
@BindView
(
R
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
@BindView
(
R
.
id
.
empty_rv
)
TextView
emptyTv
;
@BindView
(
R
.
id
.
empty_rv
)
TextView
emptyTv
;
...
@@ -44,8 +47,6 @@ public class ReposFragment extends Fragment {
...
@@ -44,8 +47,6 @@ public class ReposFragment extends Fragment {
private
SimpleSectionedRecyclerViewAdapter
mSectionedAdapter
;
private
SimpleSectionedRecyclerViewAdapter
mSectionedAdapter
;
private
SharedPreferences
.
OnSharedPreferenceChangeListener
listener
;
private
SharedPreferences
prefs
;
private
SearchView
.
OnQueryTextListener
searchListener
;
private
SearchView
.
OnQueryTextListener
searchListener
;
@Nullable
@Nullable
...
@@ -57,35 +58,23 @@ public class ReposFragment extends Fragment {
...
@@ -57,35 +58,23 @@ public class ReposFragment extends Fragment {
ButterKnife
.
bind
(
this
,
view
);
ButterKnife
.
bind
(
this
,
view
);
mSectionedAdapter
=
new
mSectionedAdapter
=
new
SimpleSectionedRecyclerViewAdapter
(
getActivity
(),
R
.
layout
.
section
,
R
.
id
.
section_text
,
new
ReposAdapter
(
fUpdateRepos
,
fInstalledRepos
,
fOthersRepos
));
SimpleSectionedRecyclerViewAdapter
(
getActivity
(),
R
.
layout
.
section
,
R
.
id
.
section_text
,
new
ReposAdapter
(
fUpdateRepos
,
fInstalledRepos
,
fOthersRepos
));
recyclerView
.
setAdapter
(
mSectionedAdapter
);
recyclerView
.
setAdapter
(
mSectionedAdapter
);
mSwipeRefreshLayout
.
setRefreshing
(
true
);
mSwipeRefreshLayout
.
setRefreshing
(
true
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
recyclerView
.
setVisibility
(
View
.
GONE
);
recyclerView
.
setVisibility
(
View
.
GONE
);
prefs
.
edit
().
putBoolean
(
"repo_done"
,
false
).
apply
();
new
Async
.
LoadRepos
(
getActivity
()).
exec
();
new
Async
.
LoadRepos
(
getActivity
()).
exec
();
});
});
if
(
prefs
.
getBoolean
(
"repo_done"
,
false
)
)
{
if
(
repoLoadDone
.
isTriggered
)
{
reloadRepos
();
reloadRepos
();
updateUI
();
updateUI
();
}
}
listener
=
(
pref
,
s
)
->
{
if
(
s
.
equals
(
"repo_done"
))
{
if
(
pref
.
getBoolean
(
s
,
false
))
{
Logger
.
dev
(
"ReposFragment: UI refresh triggered"
);
reloadRepos
();
updateUI
();
}
}
};
searchListener
=
new
SearchView
.
OnQueryTextListener
()
{
searchListener
=
new
SearchView
.
OnQueryTextListener
()
{
@Override
@Override
public
boolean
onQueryTextSubmit
(
String
query
)
{
public
boolean
onQueryTextSubmit
(
String
query
)
{
...
@@ -102,6 +91,13 @@ public class ReposFragment extends Fragment {
...
@@ -102,6 +91,13 @@ public class ReposFragment extends Fragment {
return
view
;
return
view
;
}
}
@Override
public
void
onTrigger
(
CallbackHandler
.
Event
event
)
{
Logger
.
dev
(
"ReposFragment: UI refresh triggered"
);
reloadRepos
();
updateUI
();
}
@Override
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
inflater
.
inflate
(
R
.
menu
.
menu_repo
,
menu
);
inflater
.
inflate
(
R
.
menu
.
menu_repo
,
menu
);
...
@@ -113,14 +109,14 @@ public class ReposFragment extends Fragment {
...
@@ -113,14 +109,14 @@ public class ReposFragment extends Fragment {
public
void
onResume
()
{
public
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
setHasOptionsMenu
(
true
);
setHasOptionsMenu
(
true
);
prefs
.
registerOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
register
(
repoLoadDone
,
this
);
getActivity
().
setTitle
(
R
.
string
.
downloads
);
getActivity
().
setTitle
(
R
.
string
.
downloads
);
}
}
@Override
@Override
public
void
onDestroy
()
{
public
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
prefs
.
unregisterOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
unRegister
(
repoLoadDone
,
this
);
}
}
private
void
reloadRepos
()
{
private
void
reloadRepos
()
{
...
...
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
View file @
2fa5e467
...
@@ -12,13 +12,11 @@ import com.topjohnwu.magisk.utils.Utils;
...
@@ -12,13 +12,11 @@ import com.topjohnwu.magisk.utils.Utils;
public
class
SplashActivity
extends
AppCompatActivity
{
public
class
SplashActivity
extends
AppCompatActivity
{
private
SharedPreferences
prefs
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getApplication
());
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getApplication
());
if
(
prefs
.
getString
(
"theme"
,
""
).
equals
(
"Dark"
))
{
if
(
prefs
.
getString
(
"theme"
,
""
).
equals
(
"Dark"
))
{
setTheme
(
R
.
style
.
AppTheme_dh
);
setTheme
(
R
.
style
.
AppTheme_dh
);
}
}
...
@@ -28,17 +26,14 @@ public class SplashActivity extends AppCompatActivity {
...
@@ -28,17 +26,14 @@ public class SplashActivity extends AppCompatActivity {
// Initialize prefs
// Initialize prefs
prefs
.
edit
()
prefs
.
edit
()
.
putBoolean
(
"module_done"
,
false
)
.
putBoolean
(
"repo_done"
,
false
)
.
putBoolean
(
"update_check_done"
,
false
)
.
putBoolean
(
"magiskhide"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/magiskhide/enable"
))
.
putBoolean
(
"magiskhide"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/magiskhide/enable"
))
.
putBoolean
(
"busybox"
,
Utils
.
commandExists
(
"busybox"
))
.
putBoolean
(
"busybox"
,
Utils
.
commandExists
(
"busybox"
))
.
putBoolean
(
"hosts"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/hosts"
))
.
putBoolean
(
"hosts"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/hosts"
))
.
apply
();
.
apply
();
new
Async
.
CheckUpdates
(
prefs
).
exec
();
new
Async
.
CheckUpdates
().
exec
();
Async
.
checkSafetyNet
(
getApplicationContext
());
new
Async
.
LoadModules
(
prefs
)
{
new
Async
.
LoadModules
()
{
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
super
.
onPostExecute
(
v
);
super
.
onPostExecute
(
v
);
...
...
app/src/main/java/com/topjohnwu/magisk/StatusFragment.java
View file @
2fa5e467
...
@@ -2,14 +2,10 @@ package com.topjohnwu.magisk;
...
@@ -2,14 +2,10 @@ package com.topjohnwu.magisk;
import
android.app.Fragment
;
import
android.app.Fragment
;
import
android.app.FragmentTransaction
;
import
android.app.FragmentTransaction
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.preference.PreferenceManager
;
import
android.preference.PreferenceManager
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.support.v4.content.FileProvider
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v7.app.AlertDialog
;
import
android.support.v7.app.AlertDialog
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
...
@@ -19,28 +15,25 @@ import android.widget.ImageView;
...
@@ -19,28 +15,25 @@ import android.widget.ImageView;
import
android.widget.ProgressBar
;
import
android.widget.ProgressBar
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
com.topjohnwu.magisk.receivers.DownloadReceiver
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.CallbackHandler
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.SafetyNetHelper
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.ZipUtils
;
import
java.io.File
;
import
java.util.List
;
import
java.util.List
;
import
butterknife.BindColor
;
import
butterknife.BindColor
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
public
class
StatusFragment
extends
Fragment
{
public
class
StatusFragment
extends
Fragment
implements
CallbackHandler
.
EventListener
{
public
static
int
remoteAppVersionCode
=
-
1
;
public
static
double
magiskVersion
,
remoteMagiskVersion
=
-
1
;
public
static
double
magiskVersion
,
remoteMagiskVersion
=
-
1
;
public
static
String
magiskVersionString
,
magiskLink
,
magiskChangelog
,
appLink
,
appChangelog
,
remoteAppVersion
;
public
static
String
magiskVersionString
,
magiskLink
,
magiskChangelog
;
public
static
int
SNCheckResult
=
-
1
;
private
static
int
lastSNCheckResult
=
-
1
;
public
static
final
CallbackHandler
.
Event
updateCheckDone
=
new
CallbackHandler
.
Event
();
public
static
final
CallbackHandler
.
Event
safetyNetDone
=
new
CallbackHandler
.
Event
();
@BindView
(
R
.
id
.
swipeRefreshLayout
)
SwipeRefreshLayout
mSwipeRefreshLayout
;
@BindView
(
R
.
id
.
swipeRefreshLayout
)
SwipeRefreshLayout
mSwipeRefreshLayout
;
...
@@ -69,16 +62,13 @@ public class StatusFragment extends Fragment {
...
@@ -69,16 +62,13 @@ public class StatusFragment extends Fragment {
private
AlertDialog
.
Builder
builder
;
private
AlertDialog
.
Builder
builder
;
private
SharedPreferences
prefs
;
private
SharedPreferences
.
OnSharedPreferenceChangeListener
listener
;
@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
v
=
inflater
.
inflate
(
R
.
layout
.
status_fragment
,
container
,
false
);
View
v
=
inflater
.
inflate
(
R
.
layout
.
status_fragment
,
container
,
false
);
ButterKnife
.
bind
(
this
,
v
);
ButterKnife
.
bind
(
this
,
v
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
String
theme
=
prefs
.
getString
(
"theme"
,
""
);
String
theme
=
prefs
.
getString
(
"theme"
,
""
);
if
(
theme
.
equals
(
"Dark"
))
{
if
(
theme
.
equals
(
"Dark"
))
{
...
@@ -88,34 +78,26 @@ public class StatusFragment extends Fragment {
...
@@ -88,34 +78,26 @@ public class StatusFragment extends Fragment {
}
}
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
mSwipeRefreshLayout
.
setOnRefreshListener
(()
->
{
prefs
.
edit
().
putBoolean
(
"update_check_done"
,
false
).
apply
();
magiskStatusContainer
.
setBackgroundColor
(
trans
);
magiskStatusContainer
.
setBackgroundColor
(
trans
);
magiskStatusIcon
.
setImageResource
(
0
);
magiskStatusIcon
.
setImageResource
(
0
);
magiskUpdateText
.
setText
(
R
.
string
.
checking_for_updates
);
magiskUpdateText
.
setText
(
R
.
string
.
checking_for_updates
);
magiskCheckUpdatesProgress
.
setVisibility
(
View
.
VISIBLE
);
magiskCheckUpdatesProgress
.
setVisibility
(
View
.
VISIBLE
);
new
Async
.
CheckUpdates
(
prefs
).
exec
();
safetyNetProgress
.
setVisibility
(
View
.
VISIBLE
);
checkSafetyNet
();
safetyNetContainer
.
setBackgroundColor
(
trans
);
});
safetyNetIcon
.
setImageResource
(
0
);
safetyNetStatusText
.
setText
(
R
.
string
.
checking_safetyNet_status
);
listener
=
(
pref
,
s
)
->
{
updateUI
();
if
(
s
.
equals
(
"update_check_done"
))
{
new
Async
.
CheckUpdates
().
exec
();
if
(
pref
.
getBoolean
(
s
,
false
))
{
Async
.
checkSafetyNet
(
getActivity
());
Logger
.
dev
(
"StatusFragment: UI refresh triggered"
);
});
updateUI
();
updateCheckUI
();
}
}
};
updateUI
();
updateUI
();
if
(
prefs
.
getBoolean
(
"update_check_done"
,
false
)
)
{
if
(
updateCheckDone
.
isTriggered
)
{
updateCheckUI
();
updateCheckUI
();
}
}
if
(
lastSNCheckResult
==
-
1
)
{
if
(
safetyNetDone
.
isTriggered
)
{
checkSafetyNet
();
}
else
{
updateSafetyNetUI
();
updateSafetyNetUI
();
}
}
...
@@ -139,17 +121,30 @@ public class StatusFragment extends Fragment {
...
@@ -139,17 +121,30 @@ public class StatusFragment extends Fragment {
return
v
;
return
v
;
}
}
@Override
public
void
onTrigger
(
CallbackHandler
.
Event
event
)
{
if
(
event
==
updateCheckDone
)
{
Logger
.
dev
(
"StatusFragment: Update Check UI refresh triggered"
);
updateCheckUI
();
}
else
if
(
event
==
safetyNetDone
)
{
Logger
.
dev
(
"StatusFragment: SafetyNet UI refresh triggered"
);
updateSafetyNetUI
();
}
}
@Override
@Override
public
void
onResume
()
{
public
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
prefs
.
registerOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
register
(
updateCheckDone
,
this
);
CallbackHandler
.
register
(
safetyNetDone
,
this
);
getActivity
().
setTitle
(
R
.
string
.
status
);
getActivity
().
setTitle
(
R
.
string
.
status
);
}
}
@Override
@Override
public
void
onDestroy
()
{
public
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
prefs
.
unregisterOnSharedPreferenceChangeListener
(
listener
);
CallbackHandler
.
unRegister
(
updateCheckDone
,
this
);
CallbackHandler
.
unRegister
(
safetyNetDone
,
this
);
}
}
private
void
updateUI
()
{
private
void
updateUI
()
{
...
@@ -227,7 +222,7 @@ public class StatusFragment extends Fragment {
...
@@ -227,7 +222,7 @@ public class StatusFragment extends Fragment {
private
void
updateSafetyNetUI
()
{
private
void
updateSafetyNetUI
()
{
int
image
,
color
;
int
image
,
color
;
safetyNetProgress
.
setVisibility
(
View
.
GONE
);
safetyNetProgress
.
setVisibility
(
View
.
GONE
);
switch
(
last
SNCheckResult
)
{
switch
(
SNCheckResult
)
{
case
-
1
:
case
-
1
:
color
=
colorNeutral
;
color
=
colorNeutral
;
image
=
R
.
drawable
.
ic_help
;
image
=
R
.
drawable
.
ic_help
;
...
@@ -249,19 +244,5 @@ public class StatusFragment extends Fragment {
...
@@ -249,19 +244,5 @@ public class StatusFragment extends Fragment {
safetyNetStatusText
.
setTextColor
(
color
);
safetyNetStatusText
.
setTextColor
(
color
);
safetyNetIcon
.
setImageResource
(
image
);
safetyNetIcon
.
setImageResource
(
image
);
}
}
private
void
checkSafetyNet
()
{
safetyNetProgress
.
setVisibility
(
View
.
VISIBLE
);
safetyNetContainer
.
setBackgroundColor
(
trans
);
safetyNetIcon
.
setImageResource
(
0
);
safetyNetStatusText
.
setText
(
R
.
string
.
checking_safetyNet_status
);
new
SafetyNetHelper
(
getActivity
())
{
@Override
public
void
handleResults
(
int
i
)
{
lastSNCheckResult
=
i
;
updateSafetyNetUI
();
}
}.
requestTest
();
}
}
}
app/src/main/java/com/topjohnwu/magisk/utils/Async.java
View file @
2fa5e467
...
@@ -12,7 +12,9 @@ import android.support.v7.app.AlertDialog;
...
@@ -12,7 +12,9 @@ import android.support.v7.app.AlertDialog;
import
android.util.Log
;
import
android.util.Log
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.ModulesFragment
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.ReposFragment
;
import
com.topjohnwu.magisk.StatusFragment
;
import
com.topjohnwu.magisk.StatusFragment
;
import
org.json.JSONException
;
import
org.json.JSONException
;
...
@@ -48,12 +50,6 @@ public class Async {
...
@@ -48,12 +50,6 @@ public class Async {
public
static
class
CheckUpdates
extends
NormalTask
<
Void
,
Void
,
Void
>
{
public
static
class
CheckUpdates
extends
NormalTask
<
Void
,
Void
,
Void
>
{
private
SharedPreferences
mPrefs
;
public
CheckUpdates
(
SharedPreferences
prefs
)
{
mPrefs
=
prefs
;
}
@Override
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
protected
Void
doInBackground
(
Void
...
voids
)
{
String
jsonStr
=
WebRequest
.
makeWebServiceCall
(
UPDATE_JSON
,
WebRequest
.
GET
);
String
jsonStr
=
WebRequest
.
makeWebServiceCall
(
UPDATE_JSON
,
WebRequest
.
GET
);
...
@@ -61,36 +57,32 @@ public class Async {
...
@@ -61,36 +57,32 @@ public class Async {
JSONObject
json
=
new
JSONObject
(
jsonStr
);
JSONObject
json
=
new
JSONObject
(
jsonStr
);
JSONObject
magisk
=
json
.
getJSONObject
(
"magisk"
);
JSONObject
magisk
=
json
.
getJSONObject
(
"magisk"
);
JSONObject
app
=
json
.
getJSONObject
(
"app"
);
StatusFragment
.
remoteMagiskVersion
=
magisk
.
getDouble
(
"versionCode"
);
StatusFragment
.
remoteMagiskVersion
=
magisk
.
getDouble
(
"versionCode"
);
StatusFragment
.
magiskLink
=
magisk
.
getString
(
"link"
);
StatusFragment
.
magiskLink
=
magisk
.
getString
(
"link"
);
StatusFragment
.
magiskChangelog
=
magisk
.
getString
(
"changelog"
);
StatusFragment
.
magiskChangelog
=
magisk
.
getString
(
"changelog"
);
StatusFragment
.
remoteAppVersion
=
app
.
getString
(
"version"
);
}
catch
(
JSONException
ignored
)
{}
StatusFragment
.
remoteAppVersionCode
=
app
.
getInt
(
"versionCode"
);
StatusFragment
.
appLink
=
app
.
getString
(
"link"
);
StatusFragment
.
appChangelog
=
app
.
getString
(
"changelog"
);
}
catch
(
JSONException
ignored
)
{
Logger
.
dev
(
"JSON error!"
);
}
return
null
;
return
null
;
}
}
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
mPrefs
.
edit
().
putBoolean
(
"update_check_done"
,
true
).
apply
(
);
CallbackHandler
.
triggerCallback
(
StatusFragment
.
updateCheckDone
);
}
}
}
}
public
static
class
LoadModules
extends
RootTask
<
Void
,
Void
,
Void
>
{
public
static
void
checkSafetyNet
(
Context
context
)
{
new
SafetyNetHelper
(
context
)
{
private
SharedPreferences
mPrefs
;
@Override
public
void
handleResults
(
int
i
)
{
StatusFragment
.
SNCheckResult
=
i
;
CallbackHandler
.
triggerCallback
(
StatusFragment
.
safetyNetDone
);
}
}.
requestTest
();
}
public
LoadModules
(
SharedPreferences
prefs
)
{
public
static
class
LoadModules
extends
RootTask
<
Void
,
Void
,
Void
>
{
mPrefs
=
prefs
;
}
@Override
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
protected
Void
doInBackground
(
Void
...
voids
)
{
...
@@ -100,7 +92,7 @@ public class Async {
...
@@ -100,7 +92,7 @@ public class Async {
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
mPrefs
.
edit
().
putBoolean
(
"module_done"
,
true
).
apply
(
);
CallbackHandler
.
triggerCallback
(
ModulesFragment
.
moduleLoadDone
);
}
}
}
}
...
@@ -120,8 +112,7 @@ public class Async {
...
@@ -120,8 +112,7 @@ public class Async {
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
PreferenceManager
.
getDefaultSharedPreferences
(
mContext
).
edit
()
CallbackHandler
.
triggerCallback
(
ReposFragment
.
repoLoadDone
);
.
putBoolean
(
"repo_done"
,
true
).
apply
();
}
}
}
}
...
@@ -266,7 +257,7 @@ public class Async {
...
@@ -266,7 +257,7 @@ public class Async {
protected
void
done
()
{
protected
void
done
()
{
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
mContext
);
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
mContext
);
prefs
.
edit
().
putBoolean
(
"module_done"
,
false
).
putBoolean
(
"update_check_done"
,
true
).
apply
();
prefs
.
edit
().
putBoolean
(
"module_done"
,
false
).
putBoolean
(
"update_check_done"
,
true
).
apply
();
new
LoadModules
(
prefs
).
exec
();
new
LoadModules
().
exec
();
AlertDialog
.
Builder
builder
;
AlertDialog
.
Builder
builder
;
String
theme
=
prefs
.
getString
(
"theme"
,
""
);
String
theme
=
prefs
.
getString
(
"theme"
,
""
);
...
...
app/src/main/java/com/topjohnwu/magisk/utils/CallbackHandler.java
0 → 100644
View file @
2fa5e467
package
com
.
topjohnwu
.
magisk
.
utils
;
import
java.util.HashMap
;
import
java.util.HashSet
;
public
class
CallbackHandler
{
private
static
HashMap
<
Event
,
HashSet
<
EventListener
>>
listeners
=
new
HashMap
<>();
public
static
void
register
(
Event
event
,
EventListener
listener
)
{
HashSet
<
EventListener
>
list
=
listeners
.
get
(
event
);
if
(
list
==
null
)
{
list
=
new
HashSet
<>();
listeners
.
put
(
event
,
list
);
}
list
.
add
(
listener
);
}
public
static
void
unRegister
(
Event
event
,
EventListener
listener
)
{
HashSet
<
EventListener
>
list
=
listeners
.
get
(
event
);
if
(
list
!=
null
)
{
list
.
remove
(
listener
);
}
}
public
static
void
triggerCallback
(
Event
event
)
{
event
.
isTriggered
=
true
;
HashSet
<
EventListener
>
list
=
listeners
.
get
(
event
);
if
(
list
!=
null
)
{
for
(
EventListener
listener
:
list
)
{
listener
.
onTrigger
(
event
);
}
}
}
public
static
class
Event
{
public
boolean
isTriggered
=
false
;
}
public
interface
EventListener
{
void
onTrigger
(
Event
event
);
}
}
app/src/main/java/com/topjohnwu/magisk/utils/SafetyNetHelper.java
View file @
2fa5e467
...
@@ -20,11 +20,9 @@ public abstract class SafetyNetHelper
...
@@ -20,11 +20,9 @@ public abstract class SafetyNetHelper
implements
GoogleApiClient
.
OnConnectionFailedListener
,
GoogleApiClient
.
ConnectionCallbacks
{
implements
GoogleApiClient
.
OnConnectionFailedListener
,
GoogleApiClient
.
ConnectionCallbacks
{
private
GoogleApiClient
mGoogleApiClient
;
private
GoogleApiClient
mGoogleApiClient
;
protected
Context
mContext
;
public
SafetyNetHelper
(
Context
context
)
{
public
SafetyNetHelper
(
Context
context
)
{
mContext
=
context
;
mGoogleApiClient
=
new
GoogleApiClient
.
Builder
(
context
)
mGoogleApiClient
=
new
GoogleApiClient
.
Builder
(
mContext
)
.
addApi
(
SafetyNet
.
API
)
.
addApi
(
SafetyNet
.
API
)
.
addConnectionCallbacks
(
this
)
.
addConnectionCallbacks
(
this
)
.
addOnConnectionFailedListener
(
this
)
.
addOnConnectionFailedListener
(
this
)
...
...
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