diff --git a/README.md b/README.md
index fdd45652..2314df52 100644
--- a/README.md
+++ b/README.md
@@ -9,13 +9,15 @@ Attension: Xposed API version lower than 93 is NOT supported due to a permission
## Compilation
This project uses Hidden API, so you should replace android.jar in Android Studio. [Reference](https://github.com/anggrayudi/android-hidden-api)
## Update Log
+V1.3.1
++ Performance optimization
+
V1.3
+ Downgrade minSdkVersion
+ Add new detection methods and interception methods
+ Modifying templates takes effect in real time without restarting target apps (except for file detections)
+ UI redesign with more help information in about page
+ Due to the big changes to V1.1, if there are problems please uninstall and reinstall the module
-+ Remove old hook mode and abandon trying to support virtual frameworks
V1.1
+ Add exclude self support
@@ -27,17 +29,20 @@ V1.1
同时可作为Xposed模块用于隐藏应用列表或特定应用,保护你的隐私。
注意:由于一个权限问题,Xposed API至少为93才能正常使用该模块
## 更新日志
+V1.3.1
++ 性能优化
+
V1.3
+ 支持更低Android版本
+ 增加新的检测方式和拦截方式
+ 修改模板实时生效,无需重启目标应用(除File detections)
+ UI重修,关于页面添加更多使用帮助
+ 由于较V1.1改动大,遇到问题请卸载重装模块
-+ 移除旧的工作模式,放弃支持虚拟框架
V1.1
+ 增加了排除自身功能
## TODO
++ Solve MODE_WORLDREADABLE problem
+ Downgrade Xposed API version
+ Fix webview problems
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 64dad304..862358d7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,8 @@ android {
applicationId "com.tsng.hidemyapplist"
minSdkVersion 24
targetSdkVersion 30
- versionCode 9
- versionName "1.3"
+ versionCode 10
+ versionName "1.3.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt b/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt
index 653266e6..72b06017 100644
--- a/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt
+++ b/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt
@@ -2,6 +2,7 @@ package com.tsng.hidemyapplist.xposed.hooks
import android.content.pm.ParceledListSlice
import android.os.Binder
+import android.os.Process
import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.APPNAME
import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.getRecursiveField
import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.getTemplatePref
@@ -39,7 +40,9 @@ class PackageManagerService : IXposedHookLoadPackage {
"getPackageUid" -> setResult(method, "ID detections", -1)
"getPackagesForUid" -> XposedBridge.hookMethod(method, object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
- val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String
+ val callerUid = Binder.getCallingUid()
+ if (callerUid <= Process.SYSTEM_UID) return
+ val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String
val pref = getTemplatePref(callerName)
if (!isUseHook(pref, callerName, "ID detections")) return
ld("PKMS caller: $callerName")
@@ -61,7 +64,9 @@ class PackageManagerService : IXposedHookLoadPackage {
private fun removeList(method: Method, hookName: String, pkgNameObjList: List) {
XposedBridge.hookMethod(method, object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
- val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String
+ val callerUid = Binder.getCallingUid()
+ if (callerUid <= Process.SYSTEM_UID) return
+ val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String
val pref = getTemplatePref(callerName)
if (!isUseHook(pref, callerName, hookName)) return
ld("PKMS caller: $callerName")
@@ -77,7 +82,9 @@ class PackageManagerService : IXposedHookLoadPackage {
private fun setResult(method: Method, hookName: String, result: Any?) {
XposedBridge.hookMethod(method, object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
- val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String
+ val callerUid = Binder.getCallingUid()
+ if (callerUid <= Process.SYSTEM_UID) return
+ val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String
if (callerName == APPNAME && param.args[0] == "checkHMAServiceStatus") {
param.result = 1
return
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 780f4e23..870d1147 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -13,13 +13,14 @@
新版本特性
请仔细阅读关于页面的使用帮助!\n
+ V1.3.1\n
+ [+] 性能优化\n
V1.3\n
[+] 支持更低Android版本\n
[+] 增加新的检测方式和拦截方式\n
[+] 修改模板实时生效,无需重启目标应用(除File detections)\n
[+] UI重修,关于页面添加更多使用帮助\n
[+] 由于较V1.1改动大,遇到问题请卸载重装模块\n
- [-] 移除旧的工作模式,放弃支持虚拟框架\n
[%] nativeFile拦截尚未完成\n
目前已知的bug\nEdXposed YAHFA后端无法进行file detection隐藏(测试版本:4683),请更换Sandhook后端或LSPosed。\n
diff --git a/app/src/main/res/values-zh-rCN/strings_about.xml b/app/src/main/res/values-zh-rCN/strings_about.xml
index a5ee32e4..c9a30bfd 100644
--- a/app/src/main/res/values-zh-rCN/strings_about.xml
+++ b/app/src/main/res/values-zh-rCN/strings_about.xml
@@ -6,7 +6,7 @@
如何使用该模块
- #激活和更新#\n 安装/更新模块后需要重启。另外,本模块不支持虚拟框架。(如果有人能够解决MODE_WORLD_READABLE问题欢迎联系我)
+ #激活和更新#\n 安装/更新模块后需要重启。另外,本模块暂时不支持虚拟框架。
#如何启用隐藏#\n 首先在模板管理里创建一个模板,然后在选择生效应用里对目标应用启用模板。Xposed模块作用域需要勾选“Android 系统”,如需拦截文件检测还需要勾选目标APP。(不要勾多了,会卡!)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1edc8923..5e25ebeb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,13 +13,14 @@
New features
Please read the about page carefully!\n
+ V1.3.1\n
+ [+] Performance optimization\n
V1.3\n
[+] Downgrade minSdkVersion\n
[+] Add new detection methods and interception methods\n
[+] Modifying templates takes effect in real time without restarting target apps (except for file detections)\n
[+] UI redesign with more help information in about page\n
[+] Due to the big changes to V1.1, if there are problems please uninstall and reinstall the module\n
- [-] Remove old hook mode and abandon trying to support virtual frameworks\n
[@] nativeFile interception has not been completed, wait for next updates\n
Known bugs\nUnder Edxposed YAHFA file detection hide does not work. (test version: 4683), please switch to Sandhook or LSPosed instead.\n
diff --git a/app/src/main/res/values/strings_about.xml b/app/src/main/res/values/strings_about.xml
index 98a79c3d..55186202 100644
--- a/app/src/main/res/values/strings_about.xml
+++ b/app/src/main/res/values/strings_about.xml
@@ -6,7 +6,7 @@
How to use this module
- #Activation and updates#\nNeed to reboot after installation and updates. In addition, virtual Xposed frameworks are not supported. (If anyone knows how to deal with MODE_WORLD_READABLE welcome to put a GitHub issue)
+ #Activation and updates#\nNeed to reboot after installation and updates. In addition, virtual Xposed frameworks are not supported currently.
#How to enable hide#\nFirst create a template in Manage Templates, then apply the template in Select Effective Apps. You should check Android System in Xposed module scope/whitelist. For file detections interception, you should check target apps extra. (Do not check many: it makes you device slower)