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
041531e9
Commit
041531e9
authored
Sep 10, 2016
by
d8ahazard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More cleanup, add native filepicker
Code cleanup, add filepicker lib to avoid issues with stock file apps.
parent
c2a188f7
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
132 additions
and
81 deletions
+132
-81
build.gradle
app/build.gradle
+7
-1
BaseRepoFragment.java
app/src/main/java/com/topjohnwu/magisk/BaseRepoFragment.java
+36
-25
LogFragment.java
app/src/main/java/com/topjohnwu/magisk/LogFragment.java
+0
-4
ModulesFragment.java
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
+54
-37
WelcomeActivity.java
app/src/main/java/com/topjohnwu/magisk/WelcomeActivity.java
+0
-1
Module.java
app/src/main/java/com/topjohnwu/magisk/module/Module.java
+1
-3
Repo.java
app/src/main/java/com/topjohnwu/magisk/module/Repo.java
+1
-1
Shell.java
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
+0
-3
StreamGobbler.java
...c/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java
+0
-2
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+0
-4
WebWindow.java
app/src/main/java/com/topjohnwu/magisk/utils/WebWindow.java
+33
-0
No files found.
app/build.gradle
View file @
041531e9
...
@@ -14,6 +14,7 @@ android {
...
@@ -14,6 +14,7 @@ android {
enabled
true
enabled
true
}
}
}
}
buildTypes
{
buildTypes
{
release
{
release
{
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
...
@@ -24,13 +25,18 @@ android {
...
@@ -24,13 +25,18 @@ android {
targetCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
}
}
}
repositories
{
maven
{
url
"http://dl.bintray.com/lukaville/maven"
}
}
dependencies
{
dependencies
{
compile
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
compile
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
compile
'com.android.support:recyclerview-v7:24.2.0'
compile
'com.android.support:recyclerview-v7:24.2.0'
compile
'com.android.support:cardview-v7:24.2.0'
compile
'com.android.support:cardview-v7:24.2.0'
compile
'com.android.support:design:24.2.0'
compile
'com.android.support:design:24.2.0'
compile
'com.nbsp:library:1.1'
compile
'com.jakewharton:butterknife:8.4.0'
compile
'com.jakewharton:butterknife:8.4.0'
annotationProcessor
'com.jakewharton:butterknife-compiler:8.4.0'
annotationProcessor
'com.jakewharton:butterknife-compiler:8.4.0'
}
}
app/src/main/java/com/topjohnwu/magisk/BaseRepoFragment.java
View file @
041531e9
...
@@ -25,6 +25,7 @@ import android.widget.Toast;
...
@@ -25,6 +25,7 @@ import android.widget.Toast;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.WebWindow
;
import
java.io.File
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -76,6 +77,9 @@ public abstract class BaseRepoFragment extends Fragment {
...
@@ -76,6 +77,9 @@ public abstract class BaseRepoFragment extends Fragment {
private
View
viewMain
;
private
View
viewMain
;
private
Context
context
;
private
Context
context
;
private
boolean
mIsInstalled
,
mCanUpdate
;
private
boolean
mIsInstalled
,
mCanUpdate
;
private
Repo
repo
;
private
ViewHolder
mHolder
;
private
int
mPosition
;
public
ReposAdapter
(
List
<
Repo
>
list
)
{
public
ReposAdapter
(
List
<
Repo
>
list
)
{
this
.
mList
=
list
;
this
.
mList
=
list
;
...
@@ -96,42 +100,47 @@ public abstract class BaseRepoFragment extends Fragment {
...
@@ -96,42 +100,47 @@ public abstract class BaseRepoFragment extends Fragment {
@Override
@Override
public
void
onBindViewHolder
(
final
ViewHolder
holder
,
int
position
)
{
public
void
onBindViewHolder
(
final
ViewHolder
holder
,
int
position
)
{
final
Repo
repo
=
mList
.
get
(
position
);
repo
=
mList
.
get
(
position
);
mHolder
=
holder
;
SetupViewElements
();
Log
.
d
(
"Magisk"
,
"ReposAdapter: Trying set up bindview from list pos "
+
position
+
" out of a total of "
+
mList
.
size
()
+
" and "
+
repo
.
getId
());
}
private
void
SetupViewElements
()
{
mPosition
=
mHolder
.
getAdapterPosition
();
if
(
repo
.
getId
()
!=
null
)
{
if
(
repo
.
getId
()
!=
null
)
{
TextView
authorView
=
h
older
.
author
;
TextView
authorView
=
mH
older
.
author
;
h
older
.
title
.
setText
(
repo
.
getName
());
mH
older
.
title
.
setText
(
repo
.
getName
());
h
older
.
versionName
.
setText
(
repo
.
getmVersion
());
mH
older
.
versionName
.
setText
(
repo
.
getmVersion
());
h
older
.
description
.
setText
(
repo
.
getDescription
());
mH
older
.
description
.
setText
(
repo
.
getDescription
());
String
authorString
=
getResources
().
getString
(
R
.
string
.
author
)
+
" "
+
repo
.
getmAuthor
();
String
authorString
=
getResources
().
getString
(
R
.
string
.
author
)
+
" "
+
repo
.
getmAuthor
();
h
older
.
author
.
setText
(
authorString
);
mH
older
.
author
.
setText
(
authorString
);
if
((
repo
.
getmLogUrl
()
!=
null
)
&&
(
repo
.
getmLogUrl
().
equals
(
""
)))
{
if
((
repo
.
getmLogUrl
()
!=
null
)
&&
(
repo
.
getmLogUrl
().
equals
(
""
)))
{
h
older
.
log
.
setText
(
repo
.
getmLogUrl
());
mH
older
.
log
.
setText
(
repo
.
getmLogUrl
());
Linkify
.
addLinks
(
h
older
.
log
,
Linkify
.
WEB_URLS
);
Linkify
.
addLinks
(
mH
older
.
log
,
Linkify
.
WEB_URLS
);
}
else
{
}
else
{
h
older
.
log
.
setVisibility
(
View
.
GONE
);
mH
older
.
log
.
setVisibility
(
View
.
GONE
);
}
}
h
older
.
installedStatus
.
setText
(
repo
.
isInstalled
()
?
getResources
().
getString
(
R
.
string
.
module_installed
)
:
getResources
().
getString
(
R
.
string
.
module_not_installed
));
mH
older
.
installedStatus
.
setText
(
repo
.
isInstalled
()
?
getResources
().
getString
(
R
.
string
.
module_installed
)
:
getResources
().
getString
(
R
.
string
.
module_not_installed
));
if
(
mExpandedList
.
get
(
p
osition
))
{
if
(
mExpandedList
.
get
(
mP
osition
))
{
h
older
.
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
mH
older
.
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
}
else
{
h
older
.
expandLayout
.
setVisibility
(
View
.
GONE
);
mH
older
.
expandLayout
.
setVisibility
(
View
.
GONE
);
}
}
if
(
repo
.
isInstalled
())
{
if
(
repo
.
isInstalled
())
{
h
older
.
installedStatus
.
setTextColor
(
Color
.
parseColor
(
"#14AD00"
));
mH
older
.
installedStatus
.
setTextColor
(
Color
.
parseColor
(
"#14AD00"
));
h
older
.
updateStatus
.
setText
(
repo
.
canUpdate
()
?
getResources
().
getString
(
R
.
string
.
module_update_available
)
:
getResources
().
getString
(
R
.
string
.
module_up_to_date
));
mH
older
.
updateStatus
.
setText
(
repo
.
canUpdate
()
?
getResources
().
getString
(
R
.
string
.
module_update_available
)
:
getResources
().
getString
(
R
.
string
.
module_up_to_date
));
}
}
Log
.
d
(
"Magisk"
,
"ReposAdapter: Setting up info "
+
repo
.
getId
()
+
" and "
+
repo
.
getDescription
()
+
" and "
+
repo
.
getmVersion
());
Log
.
d
(
"Magisk"
,
"ReposAdapter: Setting up info "
+
repo
.
getId
()
+
" and "
+
repo
.
getDescription
()
+
" and "
+
repo
.
getmVersion
());
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
updateImage
.
setImageResource
(
R
.
drawable
.
ic_system_update_alt_black
);
updateImage
.
setImageResource
(
R
.
drawable
.
ic_system_update_alt_black
);
mCanUpdate
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
mCanUpdate
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
updateImage
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
View
.
OnClickListener
oCl
=
view
->
{
public
void
onClick
(
View
view
)
{
if
(
view
==
updateImage
)
{
if
(!
mIsInstalled
|
mCanUpdate
)
{
if
(!
mIsInstalled
|
mCanUpdate
)
{
Utils
.
DownloadReceiver
rec
ie
ver
=
new
Utils
.
DownloadReceiver
()
{
Utils
.
DownloadReceiver
rec
ei
ver
=
new
Utils
.
DownloadReceiver
()
{
@Override
@Override
public
void
task
(
File
file
)
{
public
void
task
(
File
file
)
{
Log
.
d
(
"Magisk"
,
"Task firing"
);
Log
.
d
(
"Magisk"
,
"Task firing"
);
...
@@ -139,12 +148,17 @@ public abstract class BaseRepoFragment extends Fragment {
...
@@ -139,12 +148,17 @@ public abstract class BaseRepoFragment extends Fragment {
}
}
};
};
String
filename
=
repo
.
getId
().
replace
(
" "
,
""
)
+
".zip"
;
String
filename
=
repo
.
getId
().
replace
(
" "
,
""
)
+
".zip"
;
Utils
.
downloadAndReceive
(
context
,
rec
ie
ver
,
repo
.
getmZipUrl
(),
filename
);
Utils
.
downloadAndReceive
(
context
,
rec
ei
ver
,
repo
.
getmZipUrl
(),
filename
);
}
else
{
}
else
{
Toast
.
makeText
(
context
,
repo
.
getId
()
+
" is already installed."
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
context
,
repo
.
getId
()
+
" is already installed."
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
}
else
if
(
view
==
mHolder
.
log
)
{
new
WebWindow
(
"Changelog"
,
repo
.
getmLogUrl
(),
getActivity
());
}
}
});
};
updateImage
.
setOnClickListener
(
oCl
);
mHolder
.
log
.
setOnClickListener
(
oCl
);
if
(
prefs
.
contains
(
"repo-isInstalled_"
+
repo
.
getId
()))
{
if
(
prefs
.
contains
(
"repo-isInstalled_"
+
repo
.
getId
()))
{
mIsInstalled
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
mIsInstalled
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
// if (mIsInstalled) {
// if (mIsInstalled) {
...
@@ -155,11 +169,8 @@ public abstract class BaseRepoFragment extends Fragment {
...
@@ -155,11 +169,8 @@ public abstract class BaseRepoFragment extends Fragment {
}
}
}
}
@Override
@Override
public
int
getItemCount
()
{
public
int
getItemCount
()
{
return
mList
.
size
();
return
mList
.
size
();
...
...
app/src/main/java/com/topjohnwu/magisk/LogFragment.java
View file @
041531e9
...
@@ -25,17 +25,13 @@ import android.widget.ScrollView;
...
@@ -25,17 +25,13 @@ 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
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.FileWriter
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.Calendar
;
import
java.util.Calendar
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.ExecutionException
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
...
...
app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java
View file @
041531e9
...
@@ -14,7 +14,6 @@ import android.support.v4.app.Fragment;
...
@@ -14,7 +14,6 @@ import android.support.v4.app.Fragment;
import
android.support.v4.app.FragmentManager
;
import
android.support.v4.app.FragmentManager
;
import
android.support.v4.app.FragmentPagerAdapter
;
import
android.support.v4.app.FragmentPagerAdapter
;
import
android.support.v4.view.ViewPager
;
import
android.support.v4.view.ViewPager
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.Menu
;
import
android.view.Menu
;
...
@@ -23,14 +22,17 @@ import android.view.MenuItem;
...
@@ -23,14 +22,17 @@ import android.view.MenuItem;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.ProgressBar
;
import
android.widget.ProgressBar
;
import
android.widget.Toast
;
import
com.nbsp.materialfilepicker.MaterialFilePicker
;
import
com.nbsp.materialfilepicker.ui.FilePickerActivity
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.regex.Pattern
;
import
butterknife.BindView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.ButterKnife
;
...
@@ -42,11 +44,16 @@ public class ModulesFragment extends Fragment {
...
@@ -42,11 +44,16 @@ public class ModulesFragment extends Fragment {
public
static
List
<
Repo
>
listModulesDownload
=
new
ArrayList
<>();
public
static
List
<
Repo
>
listModulesDownload
=
new
ArrayList
<>();
private
static
final
int
FILE_SELECT_CODE
=
0
;
private
static
final
int
FILE_SELECT_CODE
=
0
;
private
int
viewPagePosition
;
private
int
viewPagePosition
;
private
static
final
int
RESULT_OK
=
1
;
@BindView
(
R
.
id
.
progressBar
)
ProgressBar
progressBar
;
@BindView
(
R
.
id
.
progressBar
)
@BindView
(
R
.
id
.
fab
)
FloatingActionButton
fabio
;
ProgressBar
progressBar
;
@BindView
(
R
.
id
.
pager
)
ViewPager
viewPager
;
@BindView
(
R
.
id
.
fab
)
@BindView
(
R
.
id
.
tab_layout
)
TabLayout
tabLayout
;
FloatingActionButton
fabio
;
@BindView
(
R
.
id
.
pager
)
ViewPager
viewPager
;
@BindView
(
R
.
id
.
tab_layout
)
TabLayout
tabLayout
;
@Nullable
@Nullable
@Override
@Override
...
@@ -54,46 +61,56 @@ public class ModulesFragment extends Fragment {
...
@@ -54,46 +61,56 @@ public class ModulesFragment extends Fragment {
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
Utils
.
LoadModules
(
getActivity
(),
false
).
execute
();
new
Utils
.
LoadModules
(
getActivity
(),
false
).
execute
();
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
new
updateUI
().
execute
();
new
updateUI
().
execute
();
setHasOptionsMenu
(
true
);
setHasOptionsMenu
(
true
);
return
view
;
return
view
;
}
}
@Override
@Override
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
public
void
onCreateOptionsMenu
(
Menu
menu
,
MenuInflater
inflater
)
{
super
.
onCreateOptionsMenu
(
menu
,
inflater
);
super
.
onCreateOptionsMenu
(
menu
,
inflater
);
inflater
.
inflate
(
R
.
menu
.
menu_module
,
menu
);
inflater
.
inflate
(
R
.
menu
.
menu_module
,
menu
);
fabio
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
fabio
.
setOnClickListener
(
view
->
{
@Override
openFilePicker
();
public
void
onClick
(
View
view
)
{
});
Intent
intent
=
new
Intent
();
intent
.
setType
(
"*/zip"
);
intent
.
setAction
(
Intent
.
ACTION_GET_CONTENT
);
startActivityForResult
(
intent
,
FILE_SELECT_CODE
);
}
}
private
void
openFilePicker
()
{
});
new
MaterialFilePicker
()
.
withSupportFragment
(
this
)
.
withFilter
(
Pattern
.
compile
(
".*\\.zip$"
))
.
withRequestCode
(
FILE_SELECT_CODE
)
.
withHiddenFiles
(
true
)
.
start
();
}
}
@Override
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
s
witch
(
requestCode
)
{
s
uper
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
case
FILE_SELECT_CODE:
Log
.
d
(
"Magisk"
,
"WelcomeActivity: Got an OK result"
+
resultCode
);
if
(
resultCode
==
Activity
.
RESULT_OK
)
{
if
(
resultCode
==
Activity
.
RESULT_OK
)
{
String
path
=
data
.
getStringExtra
(
FilePickerActivity
.
RESULT_FILE_PATH
);
Log
.
d
(
"Magisk"
,
"ModuleFragment: Got an OK result "
+
path
);
if
(
path
!=
null
)
{
Log
.
d
(
"Path: "
,
path
);
Toast
.
makeText
(
getActivity
(),
"Picked file: "
+
path
,
Toast
.
LENGTH_LONG
).
show
();
// Get the Uri of the selected file
// Get the Uri of the selected file
Uri
uri
=
data
.
getData
();
String
filePath
=
data
.
getStringExtra
(
FilePickerActivity
.
RESULT_FILE_PATH
);
String
path
=
uri
.
getPath
();
Uri
uri
=
Uri
.
parse
(
filePath
);
path
=
uri
.
getPath
();
Log
.
d
(
"Magisk"
,
"ModuleFragment: Got an OK result "
+
filePath
+
" and "
+
uri
.
toString
()
+
" and "
+
path
);
String
fileName
=
uri
.
getLastPathSegment
();
String
fileName
=
uri
.
getLastPathSegment
();
new
Utils
.
FlashZIP
(
getActivity
(),
fileName
,
path
).
execute
();
new
Utils
.
FlashZIP
(
getActivity
(),
fileName
,
path
).
execute
();
}
}
break
;
}
}}
}
@Override
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
...
@@ -107,7 +124,7 @@ public class ModulesFragment extends Fragment {
...
@@ -107,7 +124,7 @@ public class ModulesFragment extends Fragment {
viewPager
.
setAdapter
(
new
TabsAdapter
(
getChildFragmentManager
()));
viewPager
.
setAdapter
(
new
TabsAdapter
(
getChildFragmentManager
()));
tabLayout
.
setupWithViewPager
(
viewPager
);
tabLayout
.
setupWithViewPager
(
viewPager
);
viewPager
.
setCurrentItem
(
viewPagePosition
);
viewPager
.
setCurrentItem
(
viewPagePosition
);
new
Utils
.
LoadModules
(
getActivity
(),
true
).
execute
();
new
Utils
.
LoadModules
(
getActivity
(),
true
).
execute
();
new
updateUI
().
execute
();
new
updateUI
().
execute
();
break
;
break
;
}
}
...
@@ -115,8 +132,8 @@ public class ModulesFragment extends Fragment {
...
@@ -115,8 +132,8 @@ public class ModulesFragment extends Fragment {
return
super
.
onOptionsItemSelected
(
item
);
return
super
.
onOptionsItemSelected
(
item
);
}
}
void
selectPage
(
int
pageIndex
){
void
selectPage
(
int
pageIndex
)
{
tabLayout
.
setScrollPosition
(
pageIndex
,
0
f
,
true
);
tabLayout
.
setScrollPosition
(
pageIndex
,
0
f
,
true
);
viewPager
.
setCurrentItem
(
pageIndex
);
viewPager
.
setCurrentItem
(
pageIndex
);
}
}
...
@@ -137,6 +154,7 @@ public class ModulesFragment extends Fragment {
...
@@ -137,6 +154,7 @@ public class ModulesFragment extends Fragment {
}
}
}
}
public
static
class
DownloadModuleFragment
extends
BaseRepoFragment
{
public
static
class
DownloadModuleFragment
extends
BaseRepoFragment
{
@Override
@Override
...
@@ -146,7 +164,6 @@ public class ModulesFragment extends Fragment {
...
@@ -146,7 +164,6 @@ public class ModulesFragment extends Fragment {
}
}
private
class
updateUI
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
private
class
updateUI
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
@Override
@Override
...
@@ -169,7 +186,7 @@ public class ModulesFragment extends Fragment {
...
@@ -169,7 +186,7 @@ public class ModulesFragment extends Fragment {
private
class
TabsAdapter
extends
FragmentPagerAdapter
{
private
class
TabsAdapter
extends
FragmentPagerAdapter
{
String
[]
tabTitles
=
new
String
[]{
String
[]
tabTitles
=
new
String
[]{
getString
(
R
.
string
.
modules
),
getString
(
R
.
string
.
cache_modules
)
,
"Download"
getString
(
R
.
string
.
modules
),
getString
(
R
.
string
.
cache_modules
)
,
"Download"
};
};
public
TabsAdapter
(
FragmentManager
fm
)
{
public
TabsAdapter
(
FragmentManager
fm
)
{
...
...
app/src/main/java/com/topjohnwu/magisk/WelcomeActivity.java
View file @
041531e9
package
com
.
topjohnwu
.
magisk
;
package
com
.
topjohnwu
.
magisk
;
import
android.Manifest
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences
;
...
...
app/src/main/java/com/topjohnwu/magisk/module/Module.java
View file @
041531e9
...
@@ -7,8 +7,6 @@ import android.util.Log;
...
@@ -7,8 +7,6 @@ import android.util.Log;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.util.Map
;
public
class
Module
{
public
class
Module
{
private
String
mRemoveFile
;
private
String
mRemoveFile
;
...
@@ -203,6 +201,6 @@ public class Module {
...
@@ -203,6 +201,6 @@ public class Module {
public
boolean
isOnline
()
{
return
mIsOnline
;
}
public
boolean
isOnline
()
{
return
mIsOnline
;
}
public
boolean
isUpdateAvailable
()
{
return
mUpdateAvailable
;
}
;
public
boolean
isUpdateAvailable
()
{
return
mUpdateAvailable
;
}
}
}
\ No newline at end of file
app/src/main/java/com/topjohnwu/magisk/module/Repo.java
View file @
041531e9
...
@@ -102,7 +102,7 @@ public class Repo {
...
@@ -102,7 +102,7 @@ public class Repo {
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
editor
.
putString
(
"repo_"
+
mId
,
manifestString
);
editor
.
putString
(
"repo_"
+
mId
,
manifestString
);
editor
.
putBoolean
(
"hasCachedRepos"
,
true
);
editor
.
putBoolean
(
"hasCachedRepos"
,
true
);
editor
.
putString
(
"updated_"
+
mId
,
this
.
lastUpdate
.
toString
()
);
editor
.
putString
(
"updated_"
+
mId
,
this
.
lastUpdate
);
Log
.
d
(
"Magisk"
,
"Storing Preferences: "
+
manifestString
);
Log
.
d
(
"Magisk"
,
"Storing Preferences: "
+
manifestString
);
editor
.
apply
();
editor
.
apply
();
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
View file @
041531e9
package
com
.
topjohnwu
.
magisk
.
utils
;
package
com
.
topjohnwu
.
magisk
.
utils
;
import
android.os.AsyncTask
;
import
android.util.Log
;
import
java.io.DataOutputStream
;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
...
app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java
View file @
041531e9
package
com
.
topjohnwu
.
magisk
.
utils
;
package
com
.
topjohnwu
.
magisk
.
utils
;
import
android.util.Log
;
import
java.io.BufferedReader
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStream
;
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
041531e9
...
@@ -8,14 +8,11 @@ import android.content.BroadcastReceiver;
...
@@ -8,14 +8,11 @@ import android.content.BroadcastReceiver;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.content.IntentFilter
;
import
android.content.IntentFilter
;
import
android.content.SharedPreferences
;
import
android.content.pm.PackageManager
;
import
android.content.pm.PackageManager
;
import
android.content.res.Resources
;
import
android.database.Cursor
;
import
android.database.Cursor
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.AsyncTask
;
import
android.os.AsyncTask
;
import
android.os.Environment
;
import
android.os.Environment
;
import
android.preference.PreferenceManager
;
import
android.support.design.widget.Snackbar
;
import
android.support.design.widget.Snackbar
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v7.app.AlertDialog
;
import
android.support.v7.app.AlertDialog
;
...
@@ -30,7 +27,6 @@ import com.topjohnwu.magisk.module.Module;
...
@@ -30,7 +27,6 @@ import com.topjohnwu.magisk.module.Module;
import
com.topjohnwu.magisk.module.RepoHelper
;
import
com.topjohnwu.magisk.module.RepoHelper
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.Repo
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
org.json.JSONObject
;
...
...
app/src/main/java/com/topjohnwu/magisk/utils/WebWindow.java
0 → 100644
View file @
041531e9
package
com
.
topjohnwu
.
magisk
.
utils
;
import
android.content.Context
;
import
android.support.v7.app.AlertDialog
;
import
android.webkit.WebResourceRequest
;
import
android.webkit.WebView
;
import
android.webkit.WebViewClient
;
public
class
WebWindow
{
public
WebWindow
(
String
title
,
String
url
,
Context
context
)
{
AlertDialog
.
Builder
alert
=
new
AlertDialog
.
Builder
(
context
);
alert
.
setTitle
(
title
);
WebView
wv
=
new
WebView
(
context
);
wv
.
loadUrl
(
url
);
wv
.
setWebViewClient
(
new
WebViewClient
()
{
@Override
public
boolean
shouldOverrideUrlLoading
(
WebView
view
,
WebResourceRequest
request
)
{
view
.
loadUrl
(
url
);
return
true
;
}
});
alert
.
setView
(
wv
);
alert
.
setNegativeButton
(
"Close"
,
(
dialog
,
id
)
->
{
dialog
.
dismiss
();
});
alert
.
show
();
}
}
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