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
cd4dfc98
Commit
cd4dfc98
authored
Jan 27, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Superuser settings
parent
09bdbc12
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
209 additions
and
86 deletions
+209
-86
Global.java
app/src/main/java/com/topjohnwu/magisk/Global.java
+33
-2
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+26
-13
SplashActivity.java
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
+0
-8
StatusFragment.java
app/src/main/java/com/topjohnwu/magisk/StatusFragment.java
+2
-0
PolicyAdapter.java
...ain/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
+0
-2
SuLogAdapter.java
...main/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
+1
-1
RequestActivity.java
.../java/com/topjohnwu/magisk/superuser/RequestActivity.java
+4
-0
SuReceiver.java
.../main/java/com/topjohnwu/magisk/superuser/SuReceiver.java
+9
-1
SuRequestActivity.java
...ava/com/topjohnwu/magisk/superuser/SuRequestActivity.java
+32
-17
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+5
-0
activity_request.xml
app/src/main/res/layout/activity_request.xml
+1
-1
strings.xml
app/src/main/res/values-ar/strings.xml
+0
-2
strings.xml
app/src/main/res/values-de/strings.xml
+1
-3
strings.xml
app/src/main/res/values-es/strings.xml
+0
-2
strings.xml
app/src/main/res/values-it/strings.xml
+0
-2
strings.xml
app/src/main/res/values-nl/strings.xml
+0
-2
strings.xml
app/src/main/res/values-pl/strings.xml
+1
-3
strings.xml
app/src/main/res/values-pt/strings.xml
+2
-4
strings.xml
app/src/main/res/values-zh-rCN/strings.xml
+0
-2
arrays.xml
app/src/main/res/values/arrays.xml
+42
-9
strings.xml
app/src/main/res/values/strings.xml
+18
-9
app_settings.xml
app/src/main/res/xml/app_settings.xml
+32
-3
No files found.
app/src/main/java/com/topjohnwu/magisk/Global.java
View file @
cd4dfc98
...
...
@@ -28,6 +28,7 @@ public class Global {
public
static
String
bootBlock
=
null
;
public
static
boolean
isSuClient
=
false
;
public
static
String
suVersion
=
null
;
public
static
int
shellUid
;
}
public
static
class
Data
{
public
static
ValueSortedMap
<
String
,
Repo
>
repoMap
=
new
ValueSortedMap
<>();
...
...
@@ -47,9 +48,11 @@ public class Global {
public
static
boolean
isDarkTheme
;
public
static
boolean
shellLogging
;
public
static
boolean
devLogging
;
public
static
int
suRequestTimeout
=
10
;
public
static
int
suRequestTimeout
;
public
static
int
suLogTimeout
=
14
;
public
static
int
suAccessState
;
public
static
int
suResponseType
;
public
static
int
suNotificationType
;
}
public
static
void
init
(
Context
context
)
{
...
...
@@ -63,6 +66,34 @@ public class Global {
Info
.
isSuClient
=
Info
.
suVersion
.
toUpperCase
().
contains
(
"MAGISK"
);
}
updateMagiskInfo
();
initSuConfigs
(
context
);
// Initialize prefs
prefs
.
edit
()
.
putBoolean
(
"magiskhide"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/magiskhide/enable"
))
.
putBoolean
(
"busybox"
,
Utils
.
commandExists
(
"busybox"
))
.
putBoolean
(
"hosts"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/hosts"
))
.
putString
(
"su_request_timeout"
,
String
.
valueOf
(
Configs
.
suRequestTimeout
))
.
putString
(
"su_auto_response"
,
String
.
valueOf
(
Configs
.
suResponseType
))
.
putString
(
"su_notification"
,
String
.
valueOf
(
Configs
.
suNotificationType
))
.
putString
(
"su_access"
,
String
.
valueOf
(
Configs
.
suAccessState
))
.
apply
();
}
public
static
void
initSuConfigs
(
Context
context
)
{
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
List
<
String
>
ret
=
Shell
.
sh
(
"getprop persist.sys.root_access"
);
if
(
Utils
.
isValidShellResponse
(
ret
))
Configs
.
suAccessState
=
Integer
.
parseInt
(
ret
.
get
(
0
));
else
{
Shell
.
su
(
"setprop persist.sys.root_access 3"
);
Configs
.
suAccessState
=
3
;
}
Configs
.
suRequestTimeout
=
Utils
.
getPrefsInt
(
prefs
,
"su_request_timeout"
,
10
);
Configs
.
suResponseType
=
Utils
.
getPrefsInt
(
prefs
,
"su_auto_response"
,
0
);
Configs
.
suNotificationType
=
Utils
.
getPrefsInt
(
prefs
,
"su_notification"
,
1
);
ret
=
Shell
.
sh
(
"id -u shell"
);
if
(
Utils
.
isValidShellResponse
(
ret
))
Info
.
shellUid
=
Integer
.
parseInt
(
ret
.
get
(
0
));
}
static
void
updateMagiskInfo
()
{
...
...
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
cd4dfc98
...
...
@@ -6,6 +6,7 @@ import android.preference.CheckBoxPreference;
import
android.preference.Preference
;
import
android.preference.PreferenceFragment
;
import
android.preference.PreferenceManager
;
import
android.preference.PreferenceScreen
;
import
android.preference.SwitchPreference
;
import
android.support.v7.app.ActionBar
;
import
android.support.v7.app.AppCompatActivity
;
...
...
@@ -29,8 +30,6 @@ public class SettingsActivity extends AppCompatActivity {
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
String
theme
=
PreferenceManager
.
getDefaultSharedPreferences
(
getApplicationContext
()).
getString
(
"theme"
,
""
);
Logger
.
dev
(
"AboutActivity: Theme is "
+
theme
);
if
(
Global
.
Configs
.
isDarkTheme
)
{
setTheme
(
R
.
style
.
AppTheme_dh
);
}
...
...
@@ -74,6 +73,7 @@ public class SettingsActivity extends AppCompatActivity {
implements
SharedPreferences
.
OnSharedPreferenceChangeListener
{
private
SharedPreferences
prefs
;
private
PreferenceScreen
prefScreen
;
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -81,6 +81,7 @@ public class SettingsActivity extends AppCompatActivity {
addPreferencesFromResource
(
R
.
xml
.
app_settings
);
PreferenceManager
.
setDefaultValues
(
getActivity
(),
R
.
xml
.
app_settings
,
false
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
prefScreen
=
getPreferenceScreen
();
CheckBoxPreference
busyboxPreference
=
(
CheckBoxPreference
)
findPreference
(
"busybox"
);
CheckBoxPreference
magiskhidePreference
=
(
CheckBoxPreference
)
findPreference
(
"magiskhide"
);
...
...
@@ -122,21 +123,21 @@ public class SettingsActivity extends AppCompatActivity {
@Override
public
void
onSharedPreferenceChanged
(
SharedPreferences
prefs
,
String
key
)
{
Logger
.
dev
(
"Settings: Prefs change "
+
key
);
boolean
check
ed
;
boolean
enabl
ed
;
switch
(
key
)
{
case
"dark_theme"
:
check
ed
=
prefs
.
getBoolean
(
"dark_theme"
,
false
);
if
(
Global
.
Configs
.
isDarkTheme
!=
check
ed
)
{
Global
.
Configs
.
isDarkTheme
=
check
ed
;
enabl
ed
=
prefs
.
getBoolean
(
"dark_theme"
,
false
);
if
(
Global
.
Configs
.
isDarkTheme
!=
enabl
ed
)
{
Global
.
Configs
.
isDarkTheme
=
enabl
ed
;
getActivity
().
recreate
();
Global
.
Events
.
reloadMainActivity
.
trigger
();
}
break
;
case
"magiskhide"
:
check
ed
=
prefs
.
getBoolean
(
"magiskhide"
,
false
);
enabl
ed
=
prefs
.
getBoolean
(
"magiskhide"
,
false
);
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
check
ed
;
private
boolean
enable
=
enabl
ed
;
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
if
(
enable
)
{
...
...
@@ -151,9 +152,9 @@ public class SettingsActivity extends AppCompatActivity {
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
case
"busybox"
:
check
ed
=
prefs
.
getBoolean
(
"busybox"
,
false
);
enabl
ed
=
prefs
.
getBoolean
(
"busybox"
,
false
);
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
check
ed
;
private
boolean
enable
=
enabl
ed
;
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
if
(
enable
)
{
...
...
@@ -167,9 +168,9 @@ public class SettingsActivity extends AppCompatActivity {
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
case
"hosts"
:
check
ed
=
prefs
.
getBoolean
(
"hosts"
,
false
);
enabl
ed
=
prefs
.
getBoolean
(
"hosts"
,
false
);
new
Async
.
RootTask
<
Void
,
Void
,
Void
>()
{
private
boolean
enable
=
check
ed
;
private
boolean
enable
=
enabl
ed
;
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
if
(
enable
)
{
...
...
@@ -183,6 +184,19 @@ public class SettingsActivity extends AppCompatActivity {
}
}.
exec
();
break
;
case
"su_access"
:
Global
.
Configs
.
suAccessState
=
Utils
.
getPrefsInt
(
prefs
,
"su_access"
,
0
);
Shell
.
su
(
"setprop persist.sys.root_access "
+
Global
.
Configs
.
suAccessState
);
break
;
case
"su_request_timeout"
:
Global
.
Configs
.
suRequestTimeout
=
Utils
.
getPrefsInt
(
prefs
,
"su_request_timeout"
,
10
);
break
;
case
"su_auto_response"
:
Global
.
Configs
.
suResponseType
=
Utils
.
getPrefsInt
(
prefs
,
"su_auto_response"
,
0
);
break
;
case
"su_notification"
:
Global
.
Configs
.
suNotificationType
=
Utils
.
getPrefsInt
(
prefs
,
"su_notification"
,
1
);
break
;
case
"developer_logging"
:
Global
.
Configs
.
devLogging
=
prefs
.
getBoolean
(
"developer_logging"
,
false
);
break
;
...
...
@@ -190,7 +204,6 @@ public class SettingsActivity extends AppCompatActivity {
Global
.
Configs
.
shellLogging
=
prefs
.
getBoolean
(
"shell_logging"
,
false
);
break
;
}
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
View file @
cd4dfc98
...
...
@@ -7,7 +7,6 @@ import android.preference.PreferenceManager;
import
android.support.v7.app.AppCompatActivity
;
import
com.topjohnwu.magisk.utils.Async
;
import
com.topjohnwu.magisk.utils.Utils
;
public
class
SplashActivity
extends
AppCompatActivity
{
...
...
@@ -23,13 +22,6 @@ public class SplashActivity extends AppCompatActivity {
setTheme
(
R
.
style
.
AppTheme_dh
);
}
// Initialize prefs
prefs
.
edit
()
.
putBoolean
(
"magiskhide"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/magiskhide/enable"
))
.
putBoolean
(
"busybox"
,
Utils
.
commandExists
(
"busybox"
))
.
putBoolean
(
"hosts"
,
Utils
.
itemExist
(
false
,
"/magisk/.core/hosts"
))
.
apply
();
// Start all async tasks
new
Async
.
GetBootBlocks
().
exec
();
new
Async
.
CheckUpdates
().
exec
();
...
...
app/src/main/java/com/topjohnwu/magisk/StatusFragment.java
View file @
cd4dfc98
...
...
@@ -172,6 +172,7 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis
color
=
colorBad
;
image
=
R
.
drawable
.
ic_cancel
;
rootStatusText
.
setText
(
R
.
string
.
not_rooted
);
rootInfoText
.
setText
(
R
.
string
.
root_info_warning
);
break
;
case
1
:
if
(
Global
.
Info
.
suVersion
!=
null
)
{
...
...
@@ -186,6 +187,7 @@ public class StatusFragment extends Fragment implements CallbackHandler.EventLis
color
=
colorNeutral
;
image
=
R
.
drawable
.
ic_help
;
rootStatusText
.
setText
(
R
.
string
.
root_error
);
rootInfoText
.
setText
(
R
.
string
.
root_info_warning
);
}
rootStatusContainer
.
setBackgroundColor
(
color
);
rootStatusText
.
setTextColor
(
color
);
...
...
app/src/main/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
View file @
cd4dfc98
...
...
@@ -117,8 +117,6 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder
}
catch
(
PackageManager
.
NameNotFoundException
e
)
{
policyList
.
remove
(
position
);
dbHelper
.
deletePolicy
(
policy
.
uid
);
notifyItemRemoved
(
position
);
notifyItemRangeChanged
(
position
,
policyList
.
size
());
onBindViewHolder
(
holder
,
position
);
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
View file @
cd4dfc98
...
...
@@ -98,7 +98,7 @@ public class SuLogAdapter {
}
});
holder
.
appName
.
setText
(
logEntry
.
appName
);
holder
.
action
.
setText
(
logEntry
.
action
?
context
.
getString
(
R
.
string
.
grant
)
:
context
.
getString
(
R
.
string
.
deny
,
""
));
holder
.
action
.
setText
(
context
.
getString
(
logEntry
.
action
?
R
.
string
.
grant
:
R
.
string
.
deny
));
holder
.
command
.
setText
(
logEntry
.
command
);
holder
.
fromPid
.
setText
(
String
.
valueOf
(
logEntry
.
fromPid
));
holder
.
toUid
.
setText
(
String
.
valueOf
(
logEntry
.
toUid
));
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/RequestActivity.java
View file @
cd4dfc98
...
...
@@ -4,12 +4,16 @@ import android.content.Intent;
import
android.os.Bundle
;
import
android.support.v7.app.AppCompatActivity
;
import
com.topjohnwu.magisk.Global
;
public
class
RequestActivity
extends
AppCompatActivity
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
Global
.
initSuConfigs
(
this
);
Intent
intent
=
getIntent
();
if
(
intent
==
null
)
{
finish
();
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/SuReceiver.java
View file @
cd4dfc98
...
...
@@ -6,11 +6,17 @@ import android.content.Intent;
import
android.os.Process
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.Global
;
import
com.topjohnwu.magisk.R
;
import
java.util.Date
;
public
class
SuReceiver
extends
BroadcastReceiver
{
private
static
final
int
NO_NOTIFICATION
=
0
;
private
static
final
int
TOAST
=
1
;
@Override
public
void
onReceive
(
Context
context
,
Intent
intent
)
{
int
fromUid
,
toUid
,
pid
;
...
...
@@ -34,9 +40,11 @@ public class SuReceiver extends BroadcastReceiver {
return
;
}
Global
.
initSuConfigs
(
context
);
SuLogEntry
log
=
new
SuLogEntry
(
policy
);
if
(
policy
.
notification
)
{
if
(
policy
.
notification
&&
Global
.
Configs
.
suNotificationType
==
TOAST
)
{
String
message
;
switch
(
action
)
{
case
"allow"
:
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/SuRequestActivity.java
View file @
cd4dfc98
...
...
@@ -34,6 +34,10 @@ public class SuRequestActivity extends AppCompatActivity {
private
final
static
int
SU_PROTOCOL_NAME_MAX
=
20
;
private
final
static
int
SU_PROTOCOL_VALUE_MAX
=
256
;
private
static
final
int
PROMPT
=
0
;
private
static
final
int
AUTO_DENY
=
1
;
private
static
final
int
AUTO_ALLOW
=
2
;
@BindView
(
R
.
id
.
su_popup
)
LinearLayout
suPopup
;
@BindView
(
R
.
id
.
timeout
)
Spinner
timeout
;
@BindView
(
R
.
id
.
app_icon
)
ImageView
appIcon
;
...
...
@@ -64,24 +68,41 @@ public class SuRequestActivity extends AppCompatActivity {
new
SocketManager
().
execute
();
}
void
updateUI
()
throws
Throwable
{
void
showRequest
()
{
packageName
=
info
.
packageName
;
appName
=
info
.
applicationInfo
.
loadLabel
(
pm
).
toString
();
switch
(
Global
.
Configs
.
suResponseType
)
{
case
AUTO_DENY:
handleAction
(
false
,
0
);
return
;
case
AUTO_ALLOW:
handleAction
(
true
,
0
);
return
;
case
PROMPT:
default
:
}
setContentView
(
R
.
layout
.
activity_request
);
ButterKnife
.
bind
(
this
);
ArrayAdapter
<
CharSequence
>
adapter
=
ArrayAdapter
.
createFromResource
(
this
,
R
.
array
.
timeout
,
android
.
R
.
layout
.
simple_spinner_item
);
adapter
.
setDropDownViewResource
(
android
.
R
.
layout
.
simple_spinner_dropdown_item
);
timeout
.
setAdapter
(
adapter
);
appIcon
.
setImageDrawable
(
info
.
applicationInfo
.
loadIcon
(
pm
));
appNameView
.
setText
(
appName
);
packageNameView
.
setText
(
packageName
);
ArrayAdapter
<
CharSequence
>
adapter
=
ArrayAdapter
.
createFromResource
(
this
,
R
.
array
.
allow_timeout
,
android
.
R
.
layout
.
simple_spinner_item
);
adapter
.
setDropDownViewResource
(
android
.
R
.
layout
.
simple_spinner_dropdown_item
);
timeout
.
setAdapter
(
adapter
);
timer
=
new
CountDownTimer
(
Global
.
Configs
.
suRequestTimeout
*
1000
,
1000
)
{
@Override
public
void
onTick
(
long
millisUntilFinished
)
{
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
,
"("
+
millisUntilFinished
/
1000
+
")"
));
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
_with_str
,
"("
+
millisUntilFinished
/
1000
+
")"
));
}
@Override
public
void
onFinish
()
{
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
,
"(0)"
));
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
_with_str
,
"(0)"
));
handleAction
(
false
,
-
1
);
}
};
...
...
@@ -90,16 +111,15 @@ public class SuRequestActivity extends AppCompatActivity {
deny_btn
.
setOnClickListener
(
v
->
handleAction
(
false
,
timeoutList
[
timeout
.
getSelectedItemPosition
()]));
suPopup
.
setOnClickListener
((
v
)
->
{
timer
.
cancel
();
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
,
""
));
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
));
});
timeout
.
setOnTouchListener
((
v
,
event
)
->
{
timer
.
cancel
();
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
,
""
));
deny_btn
.
setText
(
getString
(
R
.
string
.
deny
));
return
false
;
});
timer
.
start
();
}
void
handleAction
(
boolean
action
,
int
timeout
)
{
...
...
@@ -175,14 +195,9 @@ public class SuRequestActivity extends AppCompatActivity {
try
{
if
(!
result
)
throw
new
Throwable
();
String
[]
pkgs
=
pm
.
getPackagesForUid
(
uid
);
if
(
pkgs
!=
null
&&
pkgs
.
length
>
0
)
{
info
=
pm
.
getPackageInfo
(
pkgs
[
0
],
0
);
packageName
=
pkgs
[
0
];
appName
=
info
.
applicationInfo
.
loadLabel
(
pm
).
toString
();
updateUI
();
}
else
throw
new
Throwable
();
if
(
pkgs
==
null
||
pkgs
.
length
==
0
)
throw
new
Throwable
();
info
=
pm
.
getPackageInfo
(
pkgs
[
0
],
0
);
showRequest
();
}
catch
(
Throwable
e
)
{
handleAction
(
false
,
-
1
);
}
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
cd4dfc98
...
...
@@ -5,6 +5,7 @@ import android.app.AlertDialog;
import
android.app.DownloadManager
;
import
android.content.Context
;
import
android.content.IntentFilter
;
import
android.content.SharedPreferences
;
import
android.content.pm.PackageManager
;
import
android.net.Uri
;
import
android.os.Environment
;
...
...
@@ -146,4 +147,8 @@ public class Utils {
return
false
;
}
public
static
int
getPrefsInt
(
SharedPreferences
prefs
,
String
key
,
int
def
)
{
return
Integer
.
parseInt
(
prefs
.
getString
(
key
,
String
.
valueOf
(
def
)));
}
}
\ No newline at end of file
app/src/main/res/layout/activity_request.xml
View file @
cd4dfc98
...
...
@@ -99,7 +99,7 @@
<Button
style=
"?android:buttonBarButtonStyle"
android:text=
"@string/deny"
android:text=
"@string/deny
_with_str
"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:id=
"@+id/deny_btn"
...
...
app/src/main/res/values-ar/strings.xml
View file @
cd4dfc98
...
...
@@ -85,8 +85,6 @@
<string
name=
"settings_general_category"
>
عام
</string>
<string
name=
"settings_dark_theme_title"
>
السمة
</string>
<string
name=
"settings_dark_theme_summary"
>
أختر سمة
</string>
<string
name=
"theme_default"
>
إفتراضي
</string>
<string
name=
"theme_dark"
>
غامق
</string>
<string
name=
"settings_magiskhide_title"
>
تمكين إخفاء Magisk
</string>
<string
name=
"settings_magiskhide_summary"
>
إخفاء Magisk من مختلف حالات الإكتشاف
</string>
...
...
app/src/main/res/values-de/strings.xml
View file @
cd4dfc98
...
...
@@ -116,8 +116,6 @@
<string
name=
"settings_general_category"
>
Allgemein
</string>
<string
name=
"settings_dark_theme_title"
>
Thema
</string>
<string
name=
"settings_dark_theme_summary"
>
Wähle ein Thema
</string>
<string
name=
"theme_default"
>
Standard
</string>
<string
name=
"theme_dark"
>
Dunkel
</string>
<string
name=
"settings_clear_cache_title"
>
Repo-Cache löschen
</string>
<string
name=
"settings_clear_cache_summary"
>
Löscht die gespeicherten Informtionen der Online-Repos, erzwingt eine Aktualisierung
</string>
...
...
@@ -138,7 +136,7 @@
<!--Superuser-->
<string
name=
"su_request_title"
>
Superuser-Anfrage
</string>
<string
name=
"deny"
>
Gewähren%1$s
</string>
<string
name=
"deny
_with_str
"
>
Gewähren%1$s
</string>
<string
name=
"grant"
>
Verweigern%1$s
</string>
<string
name=
"su_warning"
>
Gewährt vollen Zugriff auf das Gerät.\nVerweigere, wenn du dir unsicher bist!
</string>
<string
name=
"forever"
>
Dauerhaft
</string>
...
...
app/src/main/res/values-es/strings.xml
View file @
cd4dfc98
...
...
@@ -82,8 +82,6 @@
<string
name=
"settings_general_category"
>
General
</string>
<string
name=
"settings_dark_theme_title"
>
Tema
</string>
<string
name=
"settings_dark_theme_summary"
>
Selecciona un tema
</string>
<string
name=
"theme_default"
>
Por defecto
</string>
<string
name=
"theme_dark"
>
Oscuro
</string>
<string
name=
"settings_magiskhide_title"
>
Habilitar Magisk Hide
</string>
<string
name=
"settings_magiskhide_summary"
>
Ocultar Magisk de varias detecciones
</string>
...
...
app/src/main/res/values-it/strings.xml
View file @
cd4dfc98
...
...
@@ -80,8 +80,6 @@
<string
name=
"settings_general_category"
>
Generali
</string>
<string
name=
"settings_dark_theme_title"
>
Tema
</string>
<string
name=
"settings_dark_theme_summary"
>
Scegli un tema
</string>
<string
name=
"theme_default"
>
Default
</string>
<string
name=
"theme_dark"
>
Scuro
</string>
<string
name=
"settings_busybox_title"
>
Abilita BusyBox
</string>
<string
name=
"settings_busybox_summary"
>
Make Magisk\'s built-in BusyBox be visible in PATH
</string>
...
...
app/src/main/res/values-nl/strings.xml
View file @
cd4dfc98
...
...
@@ -80,8 +80,6 @@
<string
name=
"settings_general_category"
>
Algemeen
</string>
<string
name=
"settings_dark_theme_title"
>
Thema
</string>
<string
name=
"settings_dark_theme_summary"
>
Selecteer een thema
</string>
<string
name=
"theme_default"
>
Standaard
</string>
<string
name=
"theme_dark"
>
Donker
</string>
<string
name=
"settings_busybox_title"
>
Schakel BusyBox in
</string>
<string
name=
"settings_busybox_summary"
>
Maakt Magisk\'s ingebouwde BusyBox zichtbaar in PATH
</string>
...
...
app/src/main/res/values-pl/strings.xml
View file @
cd4dfc98
...
...
@@ -111,8 +111,6 @@
<!--Settings Activity -->
<string
name=
"settings_general_category"
>
Ogólne
</string>
<string
name=
"theme_default"
>
Domyślny
</string>
<string
name=
"theme_dark"
>
Ciemny
</string>
<string
name=
"settings_clear_cache_title"
>
Wyczyść Cache Repozytorium
</string>
<string
name=
"settings_clear_cache_summary"
>
Wyczyść cache dla repozytorium, wymusza odświeżenie online przez aplikację
</string>
...
...
@@ -131,7 +129,7 @@
<!--Superuser-->
<string
name=
"su_request_title"
>
Prośba dostępu Superusera
</string>
<string
name=
"deny"
>
Odmów%1$s
</string>
<string
name=
"deny
_with_str
"
>
Odmów%1$s
</string>
<string
name=
"grant"
>
Przyznaj
</string>
<string
name=
"su_warning"
>
Udziela pełnego dostępu do urządzenia.\nOdmów jeśli nie jesteś pewien!
</string>
<string
name=
"forever"
>
Zawsze
</string>
...
...
app/src/main/res/values-pt/strings.xml
View file @
cd4dfc98
...
...
@@ -109,10 +109,8 @@
<string
name=
"settings_general_category"
>
Geral
</string>
<string
name=
"settings_dark_theme_title"
>
Tema
</string>
<string
name=
"settings_dark_theme_summary"
>
Escolha um tema
</string>
<string
name=
"theme_default"
>
Padrão
</string>
<string
name=
"theme_dark"
>
Escuro
</string>
<string
name=
"settings_magiskhide_title"
>
Ativar Magisk Hide
</string>
<string
name=
"settings_magiskhide_title"
>
Ativar Magisk Hide
</string>
<string
name=
"settings_magiskhide_summary"
>
Ocultar Magisk de várias detecções
</string>
<string
name=
"settings_busybox_title"
>
Ativar BusyBox
</string>
<string
name=
"settings_busybox_summary"
>
Monta a busybox interna do Magisk\'s para xbin
</string>
...
...
app/src/main/res/values-zh-rCN/strings.xml
View file @
cd4dfc98
...
...
@@ -106,8 +106,6 @@
<string
name=
"settings_general_category"
>
常规
</string>
<string
name=
"settings_dark_theme_title"
>
主题
</string>
<string
name=
"settings_dark_theme_summary"
>
选择一个主题
</string>
<string
name=
"theme_default"
>
默认
</string>
<string
name=
"theme_dark"
>
深色
</string>
<string
name=
"settings_magiskhide_title"
>
启用 Magisk 隐藏
</string>
<string
name=
"settings_magiskhide_summary"
>
隐藏 Magisk 使其不被多种方法检测到
</string>
...
...
app/src/main/res/values/arrays.xml
View file @
cd4dfc98
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name=
"themes"
>
<item>
@string/theme_default
</item>
<item>
@string/theme_dark
</item>
</string-array>
<string-array
name=
"themes_values"
>
<item>
@string/theme_default_value
</item>
<item>
@string/theme_dark_value
</item>
</string-array>
<string-array
name=
"timeout"
>
<string-array
name=
"allow_timeout"
>
<item>
@string/forever
</item>
<item>
@string/once
</item>
<item>
@string/tenmin
</item>
...
...
@@ -16,4 +8,45 @@
<item>
@string/thirtymin
</item>
<item>
@string/sixtymin
</item>
</string-array>
<string-array
name=
"su_access"
>
<item>
@string/settings_su_disable
</item>
<item>
@string/settings_su_app
</item>
<item>
@string/settings_su_adb
</item>
<item>
@string/settings_su_app_adb
</item>
</string-array>
<string-array
name=
"value_array"
>
<item>
0
</item>
<item>
1
</item>
<item>
2
</item>
<item>
3
</item>
</string-array>
<string-array
name=
"request_timeout"
>
<item>
@string/settings_su_request_10
</item>
<item>
@string/settings_su_request_20
</item>
<item>
@string/settings_su_request_30
</item>
<item>
@string/settings_su_request_60
</item>
</string-array>
<string-array
name=
"request_timeout_value"
>
<item>
10
</item>
<item>
20
</item>
<item>
30
</item>
<item>
60
</item>
</string-array>
<string-array
name=
"auto_response"
>
<item>
@string/prompt
</item>
<item>
@string/deny
</item>
<item>
@string/grant
</item>
</string-array>
<string-array
name=
"su_notification"
>
<item>
@string/none
</item>
<item>
@string/toast
</item>
</string-array>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
cd4dfc98
...
...
@@ -122,32 +122,39 @@
<!--Settings Activity -->
<string
name=
"settings_general_category"
>
General
</string>
<string
name=
"settings_dark_theme_title"
>
Dark Theme
</string>
<string
name=
"settings_dark_theme_summary"
>
Toggle dark theme
</string>
<string
name=
"theme_default"
>
Default
</string>
<string
name=
"theme_dark"
>
Dark
</string>
<string
name=
"settings_dark_theme_summary"
>
Enable dark theme
</string>
<string
name=
"settings_clear_cache_title"
>
Clear Repo Cache
</string>
<string
name=
"settings_clear_cache_summary"
>
Clear the cached information for online repos, forces the app to refresh online
</string>
<string
name=
"settings_magiskhide_title"
>
Enable Magisk Hide
</string>
<string
name=
"settings_magiskhide_summary"
>
Hide Magisk from various detections
</string>
<string
name=
"settings_magiskhide_summary"
>
Hide Magisk from various detections
\nRequires reboot
</string>
<string
name=
"settings_busybox_title"
>
Enable BusyBox
</string>
<string
name=
"settings_busybox_summary"
>
Bind mount Magisk\'s built-in busybox to xbin
</string>
<string
name=
"settings_busybox_summary"
>
Bind mount Magisk\'s built-in busybox to xbin
\nRequires reboot
</string>
<string
name=
"settings_hosts_title"
>
Enable systemless hosts
</string>
<string
name=
"settings_hosts_summary"
>
Systemless support for Adblock apps
</string>
<string
name=
"settings_development_category"
>
Development
</string>
<string
name=
"settings_su_app_adb"
>
Apps and ADB
</string>
<string
name=
"settings_su_app"
>
Apps only
</string>
<string
name=
"settings_su_adb"
>
ADB only
</string>
<string
name=
"settings_su_disable"
>
Disabled
</string>
<string
name=
"settings_su_request_10"
>
10 seconds
</string>
<string
name=
"settings_su_request_20"
>
20 seconds
</string>
<string
name=
"settings_su_request_30"
>
30 seconds
</string>
<string
name=
"settings_su_request_60"
>
60 seconds
</string>
<string
name=
"settings_development_category"
>
App Development
</string>
<string
name=
"settings_developer_logging_title"
>
Enable advanced debug logging
</string>
<string
name=
"settings_developer_logging_summary"
>
Check this to enable verbose logging
</string>
<string
name=
"settings_shell_logging_title"
>
Enable shell command debug logging
</string>
<string
name=
"settings_shell_logging_summary"
>
Check this to enable logging all shell commands and its output
</string>
<!-- Themes -->
<string
name=
"theme_default_value"
translatable=
"false"
>
default
</string>
<string
name=
"theme_dark_value"
translatable=
"false"
>
dark
</string>
<!--Superuser-->
<string
name=
"su_request_title"
>
Superuser Request
</string>
<string
name=
"deny"
>
Deny%1$s
</string>
<string
name=
"deny_with_str"
>
Deny%1$s
</string>
<string
name=
"deny"
>
Deny
</string>
<string
name=
"prompt"
>
Prompt
</string>
<string
name=
"grant"
>
Grant
</string>
<string
name=
"su_warning"
>
Grants full access to your device.\nDeny if you\'re not sure!
</string>
<string
name=
"forever"
>
Forever
</string>
...
...
@@ -168,6 +175,8 @@
<string
name=
"su_snack_revoke"
>
%1$s rights are revoked
</string>
<string
name=
"su_revoke_title"
>
Revoke?
</string>
<string
name=
"su_revoke_msg"
>
Confirm to revoke %1$s rights?
</string>
<string
name=
"toast"
>
Toast
</string>
<string
name=
"none"
>
None
</string>
<!--Superuser logs-->
<string
name=
"pid"
>
PID:\u0020
</string>
...
...
app/src/main/res/xml/app_settings.xml
View file @
cd4dfc98
...
...
@@ -18,7 +18,7 @@
</PreferenceCategory>
<PreferenceCategory
android:title=
"
M
agisk"
>
android:title=
"
@string/m
agisk"
>
<CheckBoxPreference
android:key=
"magiskhide"
...
...
@@ -40,16 +40,45 @@
</PreferenceCategory>
<PreferenceCategory
android:title=
"@string/superuser"
>
<ListPreference
android:key=
"su_access"
android:title=
"Superuser Access"
android:entries=
"@array/su_access"
android:entryValues=
"@array/value_array"
/>
<ListPreference
android:key=
"su_auto_response"
android:title=
"Automatic Response"
android:entries=
"@array/auto_response"
android:entryValues=
"@array/value_array"
/>
<ListPreference
android:key=
"su_request_timeout"
android:title=
"Request Timeout"
android:entries=
"@array/request_timeout"
android:entryValues=
"@array/request_timeout_value"
/>
<ListPreference
android:key=
"su_notification"
android:title=
"Superuser Notification"
android:entries=
"@array/su_notification"
android:entryValues=
"@array/value_array"
/>
</PreferenceCategory>
<PreferenceCategory
android:title=
"@string/settings_development_category"
>
<
CheckBox
Preference
<
Switch
Preference
android:key=
"developer_logging"
android:defaultValue=
"false"
android:title=
"@string/settings_developer_logging_title"
android:summary=
"@string/settings_developer_logging_summary"
/>
<
CheckBox
Preference
<
Switch
Preference
android:key=
"shell_logging"
android:defaultValue=
"false"
android:title=
"@string/settings_shell_logging_title"
...
...
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