3 Commits

Author SHA1 Message Date
乌堆小透明
9f6e9504e7 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2022-10-02 18:09:32 +08:00
乌堆小透明
9338cb3f2c New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-10-02 18:09:29 +08:00
乌堆小透明
9997f8f809 New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2022-10-02 18:09:27 +08:00
194 changed files with 2544 additions and 8304 deletions

View File

@@ -1,4 +1,4 @@
name: PR Check name: Android CI
on: on:
pull_request: pull_request:

View File

@@ -1,50 +0,0 @@
name: Dev
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Clone UI
run: |
cd blockmiui
git submodule init
git submodule update
- name: Build with Gradle
run: |
bash ./gradlew assembleDebug
- name: Sign Debug APK
if: success()
id: sign_debug
uses: r0adkll/sign-android-release@v1.0.4
with:
releaseDirectory: ./app/build/outputs/apk/debug
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.KEY_STORE_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_STORE_PASSWORD }}
- name: Upload Debug APK
uses: actions/upload-artifact@v2
with:
name: WooBox_Debug
path: ${{ steps.sign_debug.outputs.signedReleaseFile }}

View File

@@ -1,67 +1,57 @@
<div align="center"> <div align="center">
<img width="160" src="https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/ic_launcher.png" alt="logo"> <img width="160" src="https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/ic_launcher.png" alt="logo">
<h1>WooBox For MIUI</h1> <h1>WooBox For MIUI</h1>
<p><b><a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/README_EN.md">English</a> 丨 简体中文</b></p> <p>
<b><a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/README_EN.md">English</a> 丨 简体中文</b>
</p>
<a href="https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases"><img alt="GitHub all releases" src="https://img.shields.io/github/downloads/Xposed-Modules-Repo/com.lt2333.simplicitytools/total?label=Downloads"></a> <a href="https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases"><img alt="GitHub all releases" src="https://img.shields.io/github/downloads/Xposed-Modules-Repo/com.lt2333.simplicitytools/total?label=Downloads"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/LittleTurtle2333/SimplicityTools"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/LittleTurtle2333/SimplicityTools"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/LittleTurtle2333/SimplicityTools"></a>
<p>一个基于 MIUI13+Android12+适配的系统拓展Xposed模块</p> <p>一个基于 MIUI13Android12适配的系统拓展Xposed模块</p>
</div> </div>
--- ---
### 模块说明 ### 模块说明
开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441) 仅支持MIUI13Android12其余版本无法使用。
当前仅基于`Android13`进行开发,`Android12`几乎不再维护。也有基于`Android13`开发,但是能在`Android12`使用的情况,请广大社区使用`Android12`的开发者自行测试和修复后提交`Pull Request` 开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441)
--- ---
### 模块截图 ### 模块截图
![截图](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/cn.jpg) ![截图](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/cn.jpg)
--- ---
### 下载地址 ### 下载地址
Xposed Xposed仓库下载:[点击此处下载最新发行版](https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases)
仓库下载:[点击此处下载最新发行版](https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases)
酷安下载:[点击此处下载最新发行版](https://www.coolapk.com/apk/com.lt2333.simplicitytools) 酷安下载:[点击此处下载最新发行版](https://www.coolapk.com/apk/com.lt2333.simplicitytools)
--- ---
### 改进翻译 ### 改进翻译
[![Crowdin](https://badges.crowdin.net/simplicitytools/localized.svg)](https://crowdin.com/project/simplicitytools)[点击此处进入Crowdin](https://crowdin.com/project/simplicitytools)
[![Crowdin](https://badges.crowdin.net/simplicitytools/localized.svg)](https://crowdin.com/project/simplicitytools) [点击此处进入Crowdin](https://crowdin.com/project/simplicitytools)
--- ---
### 第三方开源引用 ### 第三方开源引用
##### GNU General Public License v3.0 ##### GNU General Public License v3.0
[qqlittleice/MiuiHome](https://github.com/qqlittleice/MiuiHome)
[yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming) [yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming)
[Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer) [Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer)
[MonwF/customiuizer](https://github.com/MonwF/customiuizer)
##### GNU General Public License v2.0 ##### GNU General Public License v2.0
[LSPosed/CorePatch](https://github.com/LSPosed/CorePatch) [LSPosed/CorePatch](https://github.com/LSPosed/CorePatch)
##### GNU Lesser General Public License v2.1 ##### GNU Lesser General Public License v2.1
[577fkj/blockmiui](https://github.com/577fkj/blockmiui) [577fkj/blockmiui](https://github.com/577fkj/blockmiui)
##### Apache License 2.0 ##### Apache License 2.0
[KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper) [KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper)
--- ---
### License ### License
[GNU General Public License v3.0](https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE) [GNU General Public License v3.0](https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE)

View File

@@ -1,24 +1,25 @@
<div align="center"> <div align="center">
<img width="160" src="https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/ic_launcher.png" alt="logo"> <img width="160" src="https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/ic_launcher.png" alt="logo">
<h1>WooBox For MIUI</h1> <h1>WooBox For MIUI</h1>
<p><b>English 丨 <a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/README.md">简体中文</a></b></p> <p>
<b>English 丨 <a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/README.md">简体中文</a></b>
</p>
<a href="https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases"><img alt="GitHub all releases" src="https://img.shields.io/github/downloads/Xposed-Modules-Repo/com.lt2333.simplicitytools/total?label=Downloads"></a> <a href="https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases"><img alt="GitHub all releases" src="https://img.shields.io/github/downloads/Xposed-Modules-Repo/com.lt2333.simplicitytools/total?label=Downloads"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/LittleTurtle2333/SimplicityTools"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues/LittleTurtle2333/SimplicityTools"></a>
<a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/LittleTurtle2333/SimplicityTools"></a> <a href="https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE"><img alt="GitHub license" src="https://img.shields.io/github/license/LittleTurtle2333/SimplicityTools"></a>
<p>A system extension Xposed module based on MIUI13+ (Android12+) </p> <p>A system extension Xposed module based on MIUI13 (Android12) </p>
</div> </div>
--- ---
### Module Description ### Description
Currently only developed based on `Android13`, `Android12` is almost no longer maintained. There are also cases where the development is based on `Android13`, but it can be used in `Android12`. Developers in the community who use `Android12` are requested to submit `Pull Request` after testing and repairing by themselves. Only MIUI13 (Android12) is supported. The rest of the versions not be valid.
--- ---
### Screenshot ### Screenshot
![Screenshot](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/en.jpg) ![Screenshot](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/en.jpg)
--- ---
@@ -27,36 +28,27 @@ Currently only developed based on `Android13`, `Android12` is almost no longer m
Xposed Repo[Click here to download the latest release](https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases) Xposed Repo[Click here to download the latest release](https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases)
--- ---
### Participate in translation ### Participate in translation
[![Crowdin](https://badges.crowdin.net/simplicitytools/localized.svg)](https://crowdin.com/project/simplicitytools)[Click here to Crowdin](https://crowdin.com/project/simplicitytools)
[![Crowdin](https://badges.crowdin.net/simplicitytools/localized.svg)](https://crowdin.com/project/simplicitytools) [Click here to Crowdin](https://crowdin.com/project/simplicitytools)
--- ---
## Third party open source references ## Third party open source references
##### GNU General Public License v3.0 ##### GNU General Public License v3.0
[qqlittleice/MiuiHome](https://github.com/qqlittleice/MiuiHome)
[yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming) [yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming)
[Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer) [Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer)
[MonwF/customiuizer](https://github.com/MonwF/customiuizer)
##### GNU General Public License v2.0 ##### GNU General Public License v2.0
[LSPosed/CorePatch](https://github.com/LSPosed/CorePatch) [LSPosed/CorePatch](https://github.com/LSPosed/CorePatch)
##### GNU Lesser General Public License v2.1 ##### GNU Lesser General Public License v2.1
[577fkj/blockmiui](https://github.com/577fkj/blockmiui) [577fkj/blockmiui](https://github.com/577fkj/blockmiui)
##### Apache License 2.0 ##### Apache License 2.0
[KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper) [KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper)
--- ---
## License ## License
[GNU General Public License v3.0](https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE) [GNU General Public License v3.0](https://github.com/LittleTurtle2333/SimplicityTools/blob/main/LICENSE)

View File

@@ -7,12 +7,13 @@ plugins {
android { android {
compileSdk = 33 compileSdk = 33
buildToolsVersion = "33.0.0"
defaultConfig { defaultConfig {
applicationId = "com.lt2333.simplicitytools" applicationId = "com.lt2333.simplicitytools"
minSdk = 31 minSdk = 31
targetSdk = 33 targetSdk = 33
versionCode = 75 versionCode = 68
versionName = "1.7.5" versionName = "1.6.8"
buildConfigField("String", "BUILD_TIME", "\"${System.currentTimeMillis()}\"") buildConfigField("String", "BUILD_TIME", "\"${System.currentTimeMillis()}\"")
} }
@@ -51,12 +52,13 @@ android {
dependencies { dependencies {
//API //API
compileOnly("de.robv.android.xposed:api:82") compileOnly("de.robv.android.xposed:api:82")
implementation("com.github.kyuubiran:EzXHelper:1.0.3") implementation("com.github.kyuubiran:EzXHelper:0.9.2")
//UI //UI
implementation(project(":blockmiui")) implementation(project(":blockmiui"))
implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.constraintlayout:constraintlayout:2.1.3")
//APP Center //APP Center
val appCenterSdkVersion = "4.4.3" val appCenterSdkVersion = "4.4.3"
implementation("com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}") implementation("com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}")
implementation("com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}") implementation("com.microsoft.appcenter:appcenter-crashes:${appCenterSdkVersion}")
implementation("androidx.core:core-splashscreen:1.0.0-rc01")
} }

View File

@@ -27,7 +27,7 @@
public void *(de.robv.android.xposed.IXposedHookZygoteInit$StartupParam); public void *(de.robv.android.xposed.IXposedHookZygoteInit$StartupParam);
} }
-keep class * extends com.lt2333.simplicitytools.utils.xposed.EasyXposedInit -keep class * extends com.lt2333.simplicitytools.util.xposed.EasyXposedInit
-assumenosideeffects class kotlin.jvm.internal.Intrinsics { -assumenosideeffects class kotlin.jvm.internal.Intrinsics {
public static void check*(...); public static void check*(...);

View File

@@ -11,11 +11,13 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity <activity
android:name=".activity.MainActivity" android:name=".activity.SettingsActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop"> android:launchMode="singleTop">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<action android:name="miui.cn.fkj233.xposed.statusbarlyric.SettingsFragment"/>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
<category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" /> <category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" />
@@ -27,7 +29,7 @@
android:name=".launcher" android:name=".launcher"
android:enabled="true" android:enabled="true"
android:exported="true" android:exported="true"
android:targetActivity=".activity.MainActivity"> android:targetActivity=".activity.SettingsActivity">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
@@ -48,7 +50,7 @@
android:resource="@array/xposed_scope" /> android:resource="@array/xposed_scope" />
<service <service
android:name=".tiles.LockMaxFpsTile" android:name=".tile.LockMaxFpsTile"
android:exported="true" android:exported="true"
android:icon="@drawable/ic_fps" android:icon="@drawable/ic_fps"
android:label="@string/lock_max" android:label="@string/lock_max"
@@ -59,7 +61,7 @@
</service> </service>
<service <service
android:name=".tiles.AllowScreenshots" android:name=".tile.AllowScreenshots"
android:exported="true" android:exported="true"
android:icon="@drawable/ic_baseline_fullscreen_24" android:icon="@drawable/ic_baseline_fullscreen_24"
android:label="@string/allow_screenshots" android:label="@string/allow_screenshots"

View File

@@ -1 +1 @@
com.lt2333.simplicitytools.hooks.MainHook com.lt2333.simplicitytools.hook.XposedEntry

View File

@@ -1,78 +0,0 @@
package com.lt2333.simplicitytools.activity
import android.annotation.SuppressLint
import android.os.Build
import android.os.Bundle
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.activity.pages.all.AboutPage
import com.lt2333.simplicitytools.activity.pages.all.MenuPage
import com.lt2333.simplicitytools.activity.pages.s.*
import com.lt2333.simplicitytools.activity.pages.t.*
import com.lt2333.simplicitytools.hooks.rules.s.android.*
import com.microsoft.appcenter.AppCenter
import com.microsoft.appcenter.analytics.Analytics
import com.microsoft.appcenter.crashes.Crashes
import java.util.*
import kotlin.system.exitProcess
class MainActivity : MIUIActivity() {
private val activity = this
override fun onCreate(savedInstanceState: Bundle?) {
if (!checkLSPosed()) isLoad = false
super.onCreate(savedInstanceState)
if (isLoad && !BuildConfig.DEBUG) {
AppCenter.start(
application,
"ae2037d3-9914-4e0c-b02b-f9b2bb2574e5",
Analytics::class.java,
Crashes::class.java
)
}
}
//检测LSPosed是否激活
@SuppressLint("WorldReadableFiles")
private fun checkLSPosed(): Boolean {
try {
setSP(getSharedPreferences("config", MODE_WORLD_READABLE))
return true
} catch (exception: SecurityException) {
MIUIDialog(this) {
setTitle(R.string.Tips)
setMessage(R.string.not_support)
setCancelable(false)
setRButton(R.string.Done) {
exitProcess(0)
}
}.show()
}
return false
}
init {
when (Build.VERSION.SDK_INT) {
Build.VERSION_CODES.TIRAMISU -> {
registerPage(MainPageForT::class.java)
registerPage(SystemUIPageForT::class.java)
registerPage(AndroidPageForT::class.java)
registerPage(OtherPageForT::class.java)
registerPage(HideIconPageForT::class.java)
registerPage(AboutPage::class.java)
registerPage(MenuPage::class.java)
}
Build.VERSION_CODES.S -> {
registerPage(MainPageForS::class.java)
registerPage(SystemUIPageForS::class.java)
registerPage(AndroidPageForS::class.java)
registerPage(OtherPageForS::class.java)
registerPage(HideIconPageForS::class.java)
registerPage(AboutPage::class.java)
registerPage(MenuPage::class.java)
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,200 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.all
import android.content.Intent
import android.net.Uri
import android.widget.Toast
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.TextSummaryV
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.R
import java.text.SimpleDateFormat
import java.util.*
@BMPage("about_module","About Module", hideMenu = true)
class AboutPage : BasePage() {
override fun onCreate() {
Author(
authorHead = getDrawable(R.drawable.app_icon)!!,
authorName = getString(R.string.app_name),
authorTips = "${
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss",
Locale.getDefault()
).format(BuildConfig.BUILD_TIME.toLong())
}\n${BuildConfig.VERSION_NAME}(${BuildConfig.BUILD_TYPE})",
onClickListener = {
try {
activity.startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("coolmarket://apk/com.lt2333.simplicitytools")
)
)
Toast.makeText(activity, "恳求一个五星好评Thanks♪(・ω・)ノ", Toast.LENGTH_LONG)
.show()
} catch (e: Exception) {
val uri =
Uri.parse("https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
})
Line()
TitleText(text = getString(R.string.developer))
Author(
authorHead = getDrawable(R.drawable.lt)!!,
authorName = "乌堆小透明",
authorTips = "LittleTurtle2333",
onClickListener = {
try {
activity.startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("coolmarket://u/883441")
)
)
Toast.makeText(activity, "乌堆小透明:靓仔,点个关注吧!", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {
Toast.makeText(activity, "本机未安装酷安应用", Toast.LENGTH_SHORT).show()
val uri = Uri.parse("https://www.coolapk.com/u/883441")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
})
Line()
TitleText(text = getString(R.string.thank_list))
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.contributor_list,
onClickListener = {
try {
val uri =
Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools/graphs/contributors")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.third_party_open_source_statement,
onClickListener = {
try {
val uri =
Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools#%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BC%80%E6%BA%90%E5%BC%95%E7%94%A8")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
})
)
Line()
TitleText(text = getString(R.string.discussions))
TextSummaryWithArrow(TextSummaryV(textId = R.string.qq_channel, onClickListener = {
try {
val uri =
Uri.parse("https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=29Mu64&from=246610&biz=ka")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
}))
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.tg_channel,
tipsId = R.string.tg_channel_summary,
onClickListener = {
try {
activity.startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("tg://resolve?domain=simplicityrom")
)
)
} catch (e: Exception) {
Toast.makeText(activity, "本机未安装Telegram应用", Toast.LENGTH_SHORT)
.show()
val uri = Uri.parse("https://t.me/simplicityrom")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.issues,
tipsId = R.string.issues_url,
onClickListener = {
try {
val uri =
Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools/issues")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
})
)
Line()
TitleText(getString(R.string.other))
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.app_coolapk_url,
tipsId = R.string.app_coolapk_url_summary,
onClickListener = {
try {
activity.startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("coolmarket://apk/com.lt2333.simplicitytools")
)
)
Toast.makeText(
activity,
"恳求一个五星好评Thanks♪(・ω・)ノ",
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(activity, "本机未安装酷安应用", Toast.LENGTH_SHORT).show()
}
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.opensource,
tipsId = R.string.github_url,
onClickListener = {
try {
val uri =
Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.participate_in_translation,
tipsId = R.string.participate_in_translation_summary,
onClickListener = {
try {
val uri = Uri.parse("https://crowdin.com/project/simplicitytools")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show()
}
})
)
}
}

View File

@@ -1,59 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.all
import cn.fkj233.ui.activity.annotation.BMMenuPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.utils.ShellUtils
import java.util.*
@BMMenuPage("Menu")
class MenuPage : BasePage() {
override fun onCreate() {
TextSummaryWithArrow(TextSummaryV(textId = R.string.reboot, onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.Tips)
setMessage(R.string.are_you_sure_reboot)
setLButton(R.string.cancel) {
dismiss()
}
setRButton(R.string.Done) {
val command = arrayOf("reboot")
ShellUtils.execCommand(command, true)
dismiss()
}
}.show()
}))
TextSummaryWithArrow(TextSummaryV(textId = R.string.reboot_host, onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.Tips)
setMessage(R.string.are_you_sure_reboot_scope)
setLButton(R.string.cancel) {
dismiss()
}
setRButton(R.string.Done) {
val command = arrayOf(
"killall com.android.systemui",
"killall com.miui.home",
"killall com.miui.securitycenter ",
"killall com.android.settings",
"killall com.miui.powerkeeper",
"killall com.android.updater",
"killall com.miui.mediaeditor",
"killall com.miui.screenshot",
"killall com.milink.service",
"killall com.xiaomi.misubscreenui",
"killall com.miui.packageinstaller"
)
ShellUtils.execCommand(command, true)
dismiss()
}
}.show()
}))
}
}

View File

@@ -1,134 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.view.View
import android.widget.Switch
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.R
@BMPage("scope_android","Android", hideMenu = false)
class AndroidPageForS : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.corepacth)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.downgr,
tipsId = R.string.downgr_summary
), SwitchV("downgrade")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.authcreak,
tipsId = R.string.authcreak_summary
), SwitchV("authcreak")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.digestCreak,
tipsId = R.string.digestCreak_summary
), SwitchV("digestCreak")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.UsePreSig,
tipsId = R.string.UsePreSig_summary
), SwitchV("UsePreSig")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.enhancedMode,
tipsId = R.string.enhancedMode_summary
), SwitchV("enhancedMode")
)
Line()
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.disable_flag_secure,
tipsId = R.string.disable_flag_secure_summary
), SwitchV("disable_flag_secure")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.delete_on_post_notification,
tipsId = R.string.delete_on_post_notification_summary
), SwitchV("delete_on_post_notification")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_small_window_restrictions,
tipsId = R.string.remove_small_window_restrictions_summary
), SwitchV("remove_small_window_restrictions")
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.max_wallpaper_scale,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.max_wallpaper_scale)
setEditText(
"",
"${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("max_wallpaper_scale", 1.1f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"max_wallpaper_scale",
getEditText().toFloat()
)
}
dismiss()
}
}.show()
})
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.allow_untrusted_touches,
tipsId = R.string.take_effect_after_reboot
), SwitchV("allow_untrusted_touches")
)
Line()
TitleText(textId = R.string.sound)
val mediaVolumeStepsSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"media_volume_steps_switch",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.media_volume_steps_switch,
tips = "${getString(R.string.take_effect_after_reboot)}\n${getString(R.string.media_volume_steps_summary)}"
),
SwitchV(
"media_volume_steps_switch",
dataBindingSend = mediaVolumeStepsSwitchBinding.bindingSend
)
)
SeekBarWithText(
"media_volume_steps",
15,
29,
15,
dataBindingRecv = mediaVolumeStepsSwitchBinding.binding.getRecv(2)
)
}
}

View File

@@ -1,109 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.view.View
import android.widget.Switch
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.R
@BMPage("hide_icon","Hide Icon", hideMenu = false)
class HideIconPageForS : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.status_bar_icon)
TextWithSwitch(
TextV(textId = R.string.hide_battery_icon),
SwitchV("hide_battery_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_battery_charging_icon),
SwitchV("hide_battery_charging_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_gps_icon), SwitchV("hide_gps_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_bluetooth_icon),
SwitchV("hide_bluetooth_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_nfc_icon), SwitchV("hide_nfc_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_bluetooth_battery_icon),
SwitchV("hide_bluetooth_battery_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_small_hd_icon),
SwitchV("hide_small_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_big_hd_icon),
SwitchV("hide_big_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_new_hd_icon),
SwitchV("hide_new_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_hd_no_service_icon),
SwitchV("hide_hd_no_service_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_no_sim_icon),
SwitchV("hide_no_sim_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_sim_one_icon),
SwitchV("hide_sim_one_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_sim_two_icon),
SwitchV("hide_sim_two_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_mobile_activity_icon),
SwitchV("hide_mobile_activity_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_mobile_type_icon),
SwitchV("hide_mobile_type_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_wifi_icon), SwitchV("hide_wifi_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_wifi_activity_icon),
SwitchV("hide_wifi_activity_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_wifi_standard_icon),
SwitchV("hide_wifi_standard_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_slave_wifi_icon),
SwitchV("hide_slave_wifi_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_hotspot_icon),
SwitchV("hide_hotspot_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_vpn_icon), SwitchV("hide_vpn_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_airplane_icon),
SwitchV("hide_airplane_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_alarm_icon), SwitchV("hide_alarm_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_headset_icon),
SwitchV("hide_headset_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_volume_icon),
SwitchV("hide_volume_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_zen_icon), SwitchV("hide_zen_icon"))
}
}

View File

@@ -1,82 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.content.ComponentName
import android.content.pm.PackageManager
import cn.fkj233.ui.activity.annotation.BMMainPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.R
@BMMainPage("WooBox[MIUI13]")
class MainPageForS : BasePage() {
override fun onCreate() {
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.main_switch,
colorId = R.color.blue
), SwitchV("main_switch", true)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.HideLauncherIcon),
SwitchV("hLauncherIcon", onClickListener = {
activity.packageManager.setComponentEnabledSetting(
ComponentName(activity, "${BuildConfig.APPLICATION_ID}.launcher"),
if (it) {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
},
PackageManager.DONT_KILL_APP
)
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.matters_needing_attention,
colorId = R.color.red,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.matters_needing_attention)
setMessage(R.string.matters_needing_attention_context)
setRButton(R.string.Done) {
dismiss()
}
}.show()
})
)
Line()
TitleText(textId = R.string.scope)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_systemui,
tipsId = R.string.scope_systemui_summary,
onClickListener = { showFragment("scope_systemui") })
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_android,
tipsId = R.string.scope_android_summary,
onClickListener = { showFragment("scope_android") })
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_other,
tipsId = R.string.scope_other_summary,
onClickListener = { showFragment("scope_other") })
)
Line()
TitleText(textId = R.string.about)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.about_module,
tips = getString(R.string.about_module_summary),
onClickListener = { showFragment("about_module") })
)
}
}

View File

@@ -1,198 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.content.ComponentName
import android.content.Intent
import android.view.View
import android.widget.Switch
import android.widget.Toast
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import com.lt2333.simplicitytools.R
@BMPage("scope_other", "Other", hideMenu = false)
class OtherPageForS : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.scope_miuihome)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.home_time,
tipsId = R.string.home_time_summary
), SwitchV("home_time")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.double_tap_to_sleep,
tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("double_tap_to_sleep")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.miuihome_recentwiew_wallpaper_darkening, tipsId = R.string.miuihome_recentwiew_wallpaper_darkening_summary
), SwitchV("miuihome_recentwiew_wallpaper_darkening", false)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.miuihome_recentview_remove_card_animation, tipsId = R.string.miuihome_recentview_remove_card_animation_summary
), SwitchV("miuihome_recentview_remove_card_animation", false)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.miuihome_shortcut_add_small_window, tipsId = R.string.miuihome_shortcut_add_small_window_summary),
SwitchV("miuihome_shortcut_add_small_window", false)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.miuihome_scroll_icon_name, tipsId = R.string.miuihome_scroll_icon_name_summary),
SwitchV("miuihome_scroll_icon_name", false)
)
Line()
TitleText(textId = R.string.scope_powerkeeper)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_max_fps,
tipsId = R.string.lock_max_fps_summary
), SwitchV("lock_max_fps")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.prevent_recovery_of_battery_optimization_white_list,
tipsId = R.string.failed_after_restart
), SwitchV("prevent_recovery_of_battery_optimization_white_list")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.do_not_clear_app,
tipsId = R.string.do_not_clear_app_summary
), SwitchV("do_not_clear_app")
)
val makeMilletMoreAggressiveSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"make_millet_more_aggressive",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.make_millet_more_aggressive,
tipsId = R.string.make_millet_more_aggressive_summary
),
SwitchV(
"make_millet_more_aggressive",
dataBindingSend = makeMilletMoreAggressiveSwitchBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.make_millet_ignore_active,
tipsId = R.string.make_millet_ignore_active_summary
),
SwitchV("make_millet_ignore_active"),
dataBindingRecv = makeMilletMoreAggressiveSwitchBinding.binding.getRecv(2)
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.battery_optimization,
tipsId = R.string.battery_optimization_summary,
onClickListener = {
try {
val intent = Intent()
val comp = ComponentName(
"com.android.settings",
"com.android.settings.Settings\$HighPowerApplicationsActivity"
)
intent.component = comp
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "启动失败,可能是不支持", Toast.LENGTH_LONG).show()
}
})
)
Line()
TitleText(textId = R.string.scope_securitycenter)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.skip_waiting_time,
tipsId = R.string.skip_waiting_time_summary
), SwitchV("skip_waiting_time")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_open_app_confirmation_popup,
tipsId = R.string.remove_open_app_confirmation_popup_summary
), SwitchV("remove_open_app_confirmation_popup")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_one_hundred,
tipsId = R.string.lock_one_hundred_summary
), SwitchV("lock_one_hundred")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.remove_macro_blacklist),
SwitchV("remove_macro_blacklist")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.battery_life_function),
SwitchV("battery_life_function")
)
Line()
TitleText(textId = R.string.scope_mediaeditor)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.unlock_unlimited_cropping,
tipsId = R.string.unlock_unlimited_cropping_summary
), SwitchV("unlock_unlimited_cropping")
)
Line()
TitleText(textId = R.string.updater)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_ota_validate,
tipsId = R.string.remove_ota_validate_summary
), SwitchV("remove_ota_validate")
)
Line()
TitleText(textId = R.string.settings)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_notification_importance,
tipsId = R.string.show_notification_importance_summary
), SwitchV("show_notification_importance")
)
Line()
TitleText(textId = R.string.cast)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.force_support_send_app,
), SwitchV("force_support_send_app")
)
Line()
TitleText(textId = R.string.rear_display)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch,
), SwitchV("rear_show_weather")
)
Line()
TitleText(textId = R.string.remove_ad)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.remove_thememanager_ads),
SwitchV("remove_thememanager_ads")
)
Line()
TitleText(textId = R.string.pkg_installer)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.pkg_installer_summary),
SwitchV("pkg_installer_count_checking")
)
}
}

View File

@@ -1,740 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.s
import android.content.Intent
import android.net.Uri
import android.view.View
import android.widget.Switch
import android.widget.Toast
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SpinnerV
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog
import cn.fkj233.ui.dialog.NewDialog
import com.lt2333.simplicitytools.R
@BMPage("scope_systemui", "System UI", hideMenu = false)
class SystemUIPageForS : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.statusbar)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.double_tap_to_sleep),
SwitchV("status_bar_double_tap_to_sleep")
)
Line()
TitleText(textId = R.string.status_bar_layout)
val statusBarLayoutMode: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.default1)
it[1] = getString(R.string.clock_center)
it[2] = getString(R.string.clock_right)
it[3] = getString(R.string.clock_center_and_icon_left)
}
TextWithSpinner(
TextV(textId = R.string.status_bar_layout_mode),
SpinnerV(
statusBarLayoutMode[MIUIActivity.safeSP.getInt(
"status_bar_layout_mode",
0
)].toString()
) {
add(statusBarLayoutMode[0].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 0)
}
add(statusBarLayoutMode[1].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 1)
}
add(statusBarLayoutMode[2].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 2)
}
add(statusBarLayoutMode[3].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 3)
}
})
val layoutCompatibilityBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"layout_compatibility_mode", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.layout_compatibility_mode, tipsId = R.string.layout_compatibility_mode_summary
), SwitchV("layout_compatibility_mode", dataBindingSend = layoutCompatibilityBinding.bindingSend)
)
Text(
textId = R.string.left_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_left_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
Text(
textId = R.string.right_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_right_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.status_bar_clock_format)
val customClockPresetBinding = GetDataBinding({
MIUIActivity.safeSP.getInt(
"custom_clock_mode",
0
) == 1
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
val customClockGeekBinding =
GetDataBinding({ MIUIActivity.safeSP.getInt("custom_clock_mode", 0) == 2 }
) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
val customClockMode: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.off)
it[1] = getString(R.string.preset)
it[2] = getString(R.string.geek)
}
TextWithSpinner(
TextV(textId = R.string.custom_clock_mode),
SpinnerV(customClockMode[MIUIActivity.safeSP.getInt("custom_clock_mode", 0)].toString()) {
add(customClockMode[0].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 0)
customClockPresetBinding.binding.Send().send(false)
customClockGeekBinding.binding.Send().send(false)
}
add(customClockMode[1].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 1)
customClockPresetBinding.binding.Send().send(true)
customClockGeekBinding.binding.Send().send(false)
}
add(customClockMode[2].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 2)
customClockPresetBinding.binding.Send().send(false)
customClockGeekBinding.binding.Send().send(true)
}
})
//预设模式起始
TextWithSwitch(
TextV(textId = R.string.status_bar_time_year),
SwitchV("status_bar_time_year"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_month),
SwitchV("status_bar_time_month"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_day),
SwitchV("status_bar_time_day"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_week),
SwitchV("status_bar_time_week"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_hour),
SwitchV("status_bar_time_double_hour"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_period),
SwitchV("status_bar_time_period", true),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_seconds),
SwitchV("status_bar_time_seconds"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_hide_space),
SwitchV("status_bar_time_hide_space"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line),
SwitchV("status_bar_time_double_line"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line_center_align),
SwitchV("status_bar_time_double_line_center_align"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_size,
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_size",
0,
18,
0,
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_double_line_size,
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_double_line_size",
0,
9,
0,
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
//预设模式结束
//极客模式起始
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_clock_format_geek) {
NewDialog(activity) {
setTitle(R.string.custom_clock_format_geek)
setEditText(
MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false
)
Button(getString(R.string.click_to_view_use_cases)) {
val locale = context.resources.configuration.locale
val language = locale.language
if (language.endsWith("zh")) {
val uri = Uri.parse("https://zhuti.designer.xiaomi.com/docs/grammar/#%E6%97%B6%E9%97%B4%E6%97%A5%E6%9C%9F")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} else {
val uri = Uri.parse("https://docs.google.com/spreadsheets/d/1ghkT2iFbxB3bT4TKCiKAfmEdGt6kTVKFU3dm4Nz1or8/edit?usp=sharing")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
}
Button(getString(R.string.Done)) {
if (getEditText().isNotEmpty()) {
try {
MIUIActivity.safeSP.putAny("custom_clock_format_geek", getEditText())
dismiss()
return@Button
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
Button(getString(R.string.cancel), cancelStyle = true) {
dismiss()
}
}.show()
}, dataBindingRecv = customClockGeekBinding.binding.getRecv(2))
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line_center_align),
SwitchV("status_bar_time_center_align_geek"),
dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_size,
dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_size_geek",
0,
18,
0,
dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
//极客模式结束
Line()
TitleText(textId = R.string.status_bar_icon)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.hide_icon,
onClickListener = { showFragment("hide_icon") })
)
TextWithSwitch(
TextV(textId = R.string.show_wifi_standard),
SwitchV("show_wifi_standard")
)
val customMobileTypeTextBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"custom_mobile_type_text_switch",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.custom_mobile_type_text_switch),
SwitchV(
"custom_mobile_type_text_switch",
dataBindingSend = customMobileTypeTextBinding.bindingSend
)
)
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_mobile_type_text) {
MIUIDialog(activity) {
setTitle(R.string.custom_mobile_type_text)
setEditText(MIUIActivity.safeSP.getString("custom_mobile_type_text", "5G"), "")
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
MIUIActivity.safeSP.putAny("custom_mobile_type_text", getEditText())
dismiss()
return@setRButton
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT)
.show()
}
}.show()
}, dataBindingRecv = customMobileTypeTextBinding.binding.getRecv(2))
val bigMobileTypeIconBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"big_mobile_type_icon",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.big_mobile_type_icon),
SwitchV(
"big_mobile_type_icon",
dataBindingSend = bigMobileTypeIconBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.big_mobile_type_icon_bold),
SwitchV("big_mobile_type_icon_bold", true),
dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.big_mobile_type_icon_size,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_size)
setEditText(
"",
"${activity.getString(R.string.def)}12.5, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("big_mobile_type_icon_size", 12.5f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_size",
getEditText().toFloat()
)
}
dismiss()
}
}.show()
}), dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithArrow(TextSummaryV(textId = R.string.big_mobile_type_icon_up_and_down_position) {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_up_and_down_position)
setMessage("${activity.getString(R.string.range)} -15~15")
setEditText(
"",
"${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getInt("big_mobile_type_icon_up_and_down_position", 0)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (-15..15)) {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_up_and_down_position",
value
)
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT)
.show()
}
}.show()
}, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2))
TextSummaryWithArrow(TextSummaryV(textId = R.string.big_mobile_type_icon_left_and_right_margins) {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_left_and_right_margins)
setMessage("${activity.getString(R.string.range)} 0~30")
setEditText(
"",
"${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getInt("big_mobile_type_icon_left_and_right_margins", 0)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (0..30)) {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_left_and_right_margins",
value
)
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT)
.show()
}
}.show()
}, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2))
Text(textId = R.string.maximum_number_of_notification_icons)
SeekBarWithText("maximum_number_of_notification_icons", 1, 30, 3)
Text(textId = R.string.maximum_number_of_notification_dots)
SeekBarWithText("maximum_number_of_notification_dots", 0, 4, 3)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.battery_percentage_font_size,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.battery_percentage_font_size)
setMessage(R.string.zero_do_no_change)
setEditText(
"", "${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("battery_percentage_font_size", 0f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"battery_percentage_font_size",
getEditText().toFloat()
)
}
dismiss()
}
}.show()
})
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.hide_battery_percentage_icon,
tipsId = R.string.hide_battery_percentage_icon_summary
), SwitchV("hide_battery_percentage_icon")
)
Line()
TitleText(textId = R.string.status_bar_network_speed)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.status_bar_network_speed_refresh_speed,
tipsId = R.string.status_bar_network_speed_refresh_speed_summary
), SwitchV("status_bar_network_speed_refresh_speed")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.hide_status_bar_network_speed_second,
tipsId = R.string.hide_status_bar_network_speed_second_summary
), SwitchV("hide_status_bar_network_speed_second")
)
TextWithSwitch(
TextV(textId = R.string.hide_network_speed_splitter),
SwitchV("hide_network_speed_splitter")
)
val statusBarDualRowNetworkSpeedBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"status_bar_dual_row_network_speed",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.status_bar_dual_row_network_speed,
tipsId = R.string.status_bar_dual_row_network_speed_summary
),
SwitchV(
"status_bar_dual_row_network_speed",
dataBindingSend = statusBarDualRowNetworkSpeedBinding.bindingSend
)
)
val align: HashMap<Int, String> = hashMapOf()
align[0] = getString(R.string.left)
align[1] = getString(R.string.right)
TextWithSpinner(
TextV(textId = R.string.status_bar_network_speed_dual_row_gravity),
SpinnerV(
align[MIUIActivity.safeSP.getInt(
"status_bar_network_speed_dual_row_gravity",
0
)].toString()
) {
add(align[0].toString()) {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_gravity", 0)
}
add(align[1].toString()) {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_gravity", 1)
}
},
dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
TextWithSpinner(
TextV(textId = R.string.status_bar_network_speed_dual_row_icon),
SpinnerV(
MIUIActivity.safeSP.getString(
"status_bar_network_speed_dual_row_icon",
getString(R.string.none)
)
) {
add(getString(R.string.none)) {
MIUIActivity.safeSP.putAny(
"status_bar_network_speed_dual_row_icon",
getString(R.string.none)
)
}
add("▲▼") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "▲▼")
}
add("△▽") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "△▽")
}
add("↑↓") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "↑↓")
}
})
Text(
textId = R.string.status_bar_network_speed_dual_row_size,
dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_network_speed_dual_row_size",
0,
9,
0,
dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.notification_center)
val showWeatherMainSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"notification_weather",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch,
colorId = R.color.blue
),
SwitchV(
"notification_weather",
dataBindingSend = showWeatherMainSwitchBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_city,
),
SwitchV("notification_weather_city"),
dataBindingRecv = showWeatherMainSwitchBinding.binding.getRecv(2)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.can_notification_slide,
tipsId = R.string.can_notification_slide_summary,
),
SwitchV("can_notification_slide"),
)
Line()
TitleText(textId = R.string.control_center)
val controlCenterWeatherBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"control_center_weather",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch,
colorId = R.color.blue,
tipsId = R.string.control_center_weather_summary
),
SwitchV(
"control_center_weather",
dataBindingSend = controlCenterWeatherBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_city,
),
SwitchV("control_center_weather_city"),
dataBindingRecv = controlCenterWeatherBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.lock_screen)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_screen_clock_display_seconds,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("lock_screen_clock_display_seconds")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_the_left_side_of_the_lock_screen,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("remove_the_left_side_of_the_lock_screen")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_lock_screen_camera,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("remove_lock_screen_camera")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.enable_wave_charge_animation),
SwitchV("enable_wave_charge_animation")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_screen_charging_current,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("lock_screen_charging_current")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.double_tap_to_sleep,
tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("lock_screen_double_tap_to_sleep")
)
Line()
TitleText(textId = R.string.old_quick_settings_panel)
val oldQSCustomSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"old_qs_custom_switch",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.old_qs_custom_switch,
colorId = R.color.blue
),
SwitchV(
"old_qs_custom_switch",
dataBindingSend = oldQSCustomSwitchBinding.bindingSend
)
)
Text(
textId = R.string.qs_custom_rows,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_rows",
1,
6,
3,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_rows_horizontal,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_rows_horizontal",
1,
3,
2,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_columns,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_columns",
1,
7,
4,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_columns_unexpanded,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_columns_unexpanded",
1,
7,
5,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
}
}

View File

@@ -1,134 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.t
import android.view.View
import android.widget.Switch
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.R
@BMPage("scope_android","Android", hideMenu = false)
class AndroidPageForT : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.corepacth)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.downgr,
tipsId = R.string.downgr_summary
), SwitchV("downgrade")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.authcreak,
tipsId = R.string.authcreak_summary
), SwitchV("authcreak")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.digestCreak,
tipsId = R.string.digestCreak_summary
), SwitchV("digestCreak")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.UsePreSig,
tipsId = R.string.UsePreSig_summary
), SwitchV("UsePreSig")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.enhancedMode,
tipsId = R.string.enhancedMode_summary
), SwitchV("enhancedMode")
)
Line()
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.disable_flag_secure,
tipsId = R.string.disable_flag_secure_summary
), SwitchV("disable_flag_secure")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.delete_on_post_notification,
tipsId = R.string.delete_on_post_notification_summary
), SwitchV("delete_on_post_notification")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_small_window_restrictions,
tipsId = R.string.remove_small_window_restrictions_summary
), SwitchV("remove_small_window_restrictions")
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.max_wallpaper_scale,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.max_wallpaper_scale)
setEditText(
"",
"${activity.getString(R.string.def)}1.2, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("max_wallpaper_scale", 1.2f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"max_wallpaper_scale",
getEditText().toFloat()
)
}
dismiss()
}
}.show()
})
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.allow_untrusted_touches,
tipsId = R.string.take_effect_after_reboot
), SwitchV("allow_untrusted_touches")
)
Line()
TitleText(textId = R.string.sound)
val mediaVolumeStepsSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"media_volume_steps_switch",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.media_volume_steps_switch,
tips = "${getString(R.string.take_effect_after_reboot)}\n${getString(R.string.media_volume_steps_summary)}"
),
SwitchV(
"media_volume_steps_switch",
dataBindingSend = mediaVolumeStepsSwitchBinding.bindingSend
)
)
SeekBarWithText(
"media_volume_steps",
15,
29,
15,
dataBindingRecv = mediaVolumeStepsSwitchBinding.binding.getRecv(2)
)
}
}

View File

@@ -1,109 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.t
import android.view.View
import android.widget.Switch
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.R
@BMPage("hide_icon","Hide Icon", hideMenu = false)
class HideIconPageForT : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.status_bar_icon)
TextWithSwitch(
TextV(textId = R.string.hide_battery_icon),
SwitchV("hide_battery_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_battery_charging_icon),
SwitchV("hide_battery_charging_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_gps_icon), SwitchV("hide_gps_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_bluetooth_icon),
SwitchV("hide_bluetooth_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_nfc_icon), SwitchV("hide_nfc_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_bluetooth_battery_icon),
SwitchV("hide_bluetooth_battery_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_small_hd_icon),
SwitchV("hide_small_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_big_hd_icon),
SwitchV("hide_big_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_new_hd_icon),
SwitchV("hide_new_hd_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_hd_no_service_icon),
SwitchV("hide_hd_no_service_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_no_sim_icon),
SwitchV("hide_no_sim_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_sim_one_icon),
SwitchV("hide_sim_one_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_sim_two_icon),
SwitchV("hide_sim_two_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_mobile_activity_icon),
SwitchV("hide_mobile_activity_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_mobile_type_icon),
SwitchV("hide_mobile_type_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_wifi_icon), SwitchV("hide_wifi_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_wifi_activity_icon),
SwitchV("hide_wifi_activity_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_wifi_standard_icon),
SwitchV("hide_wifi_standard_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_slave_wifi_icon),
SwitchV("hide_slave_wifi_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_hotspot_icon),
SwitchV("hide_hotspot_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_vpn_icon), SwitchV("hide_vpn_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_airplane_icon),
SwitchV("hide_airplane_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_alarm_icon), SwitchV("hide_alarm_icon"))
TextWithSwitch(
TextV(textId = R.string.hide_headset_icon),
SwitchV("hide_headset_icon")
)
TextWithSwitch(
TextV(textId = R.string.hide_volume_icon),
SwitchV("hide_volume_icon")
)
TextWithSwitch(TextV(textId = R.string.hide_zen_icon), SwitchV("hide_zen_icon"))
}
}

View File

@@ -1,82 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.t
import android.content.ComponentName
import android.content.pm.PackageManager
import cn.fkj233.ui.activity.annotation.BMMainPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.dialog.MIUIDialog
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.R
@BMMainPage("WooBox[MIUI14]")
class MainPageForT : BasePage() {
override fun onCreate() {
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.main_switch,
colorId = R.color.blue
), SwitchV("main_switch", true)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.HideLauncherIcon),
SwitchV("hLauncherIcon", onClickListener = {
activity.packageManager.setComponentEnabledSetting(
ComponentName(activity, "${BuildConfig.APPLICATION_ID}.launcher"),
if (it) {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
},
PackageManager.DONT_KILL_APP
)
})
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.matters_needing_attention,
colorId = R.color.red,
onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.matters_needing_attention)
setMessage(R.string.matters_needing_attention_context)
setRButton(R.string.Done) {
dismiss()
}
}.show()
})
)
Line()
TitleText(textId = R.string.scope)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_systemui,
tipsId = R.string.scope_systemui_summary,
onClickListener = { showFragment("scope_systemui") })
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_android,
tipsId = R.string.scope_android_summary,
onClickListener = { showFragment("scope_android") })
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.scope_other,
tipsId = R.string.scope_other_summary,
onClickListener = { showFragment("scope_other") })
)
Line()
TitleText(textId = R.string.about)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.about_module,
tips = getString(R.string.about_module_summary),
onClickListener = { showFragment("about_module") })
)
}
}

View File

@@ -1,198 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.t
import android.content.ComponentName
import android.content.Intent
import android.view.View
import android.widget.Switch
import android.widget.Toast
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import com.lt2333.simplicitytools.R
@BMPage("scope_other", "Other", hideMenu = false)
class OtherPageForT : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.scope_miuihome)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.home_time,
tipsId = R.string.home_time_summary
), SwitchV("home_time")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.double_tap_to_sleep,
tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("double_tap_to_sleep")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.miuihome_recentwiew_wallpaper_darkening, tipsId = R.string.miuihome_recentwiew_wallpaper_darkening_summary
), SwitchV("miuihome_recentwiew_wallpaper_darkening", false)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.miuihome_recentview_remove_card_animation, tipsId = R.string.miuihome_recentview_remove_card_animation_summary
), SwitchV("miuihome_recentview_remove_card_animation", false)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.miuihome_shortcut_add_small_window, tipsId = R.string.miuihome_shortcut_add_small_window_summary),
SwitchV("miuihome_shortcut_add_small_window", false)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.miuihome_scroll_icon_name, tipsId = R.string.miuihome_scroll_icon_name_summary),
SwitchV("miuihome_scroll_icon_name", false)
)
Line()
TitleText(textId = R.string.scope_powerkeeper)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_max_fps,
tipsId = R.string.lock_max_fps_summary
), SwitchV("lock_max_fps")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.prevent_recovery_of_battery_optimization_white_list,
tipsId = R.string.failed_after_restart
), SwitchV("prevent_recovery_of_battery_optimization_white_list")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.do_not_clear_app,
tipsId = R.string.do_not_clear_app_summary
), SwitchV("do_not_clear_app")
)
val makeMilletMoreAggressiveSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"make_millet_more_aggressive",
false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.make_millet_more_aggressive,
tipsId = R.string.make_millet_more_aggressive_summary
),
SwitchV(
"make_millet_more_aggressive",
dataBindingSend = makeMilletMoreAggressiveSwitchBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.make_millet_ignore_active,
tipsId = R.string.make_millet_ignore_active_summary
),
SwitchV("make_millet_ignore_active"),
dataBindingRecv = makeMilletMoreAggressiveSwitchBinding.binding.getRecv(2)
)
TextSummaryWithArrow(
TextSummaryV(
textId = R.string.battery_optimization,
tipsId = R.string.battery_optimization_summary,
onClickListener = {
try {
val intent = Intent()
val comp = ComponentName(
"com.android.settings",
"com.android.settings.Settings\$HighPowerApplicationsActivity"
)
intent.component = comp
activity.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(activity, "启动失败,可能是不支持", Toast.LENGTH_LONG).show()
}
})
)
Line()
TitleText(textId = R.string.scope_securitycenter)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.skip_waiting_time,
tipsId = R.string.skip_waiting_time_summary
), SwitchV("skip_waiting_time")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_open_app_confirmation_popup,
tipsId = R.string.remove_open_app_confirmation_popup_summary
), SwitchV("remove_open_app_confirmation_popup")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_one_hundred,
tipsId = R.string.lock_one_hundred_summary
), SwitchV("lock_one_hundred")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.remove_macro_blacklist),
SwitchV("remove_macro_blacklist")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.battery_life_function),
SwitchV("battery_life_function")
)
Line()
TitleText(textId = R.string.scope_mediaeditor)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.unlock_unlimited_cropping,
tipsId = R.string.unlock_unlimited_cropping_summary
), SwitchV("unlock_unlimited_cropping")
)
Line()
TitleText(textId = R.string.updater)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_ota_validate,
tipsId = R.string.remove_ota_validate_summary
), SwitchV("remove_ota_validate")
)
Line()
TitleText(textId = R.string.settings)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_notification_importance,
tipsId = R.string.show_notification_importance_summary
), SwitchV("show_notification_importance")
)
Line()
TitleText(textId = R.string.cast)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.force_support_send_app,
), SwitchV("force_support_send_app")
)
Line()
TitleText(textId = R.string.rear_display)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch,
), SwitchV("rear_show_weather")
)
Line()
TitleText(textId = R.string.remove_ad)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.remove_thememanager_ads),
SwitchV("remove_thememanager_ads")
)
Line()
TitleText(textId = R.string.pkg_installer)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.pkg_installer_summary),
SwitchV("pkg_installer_count_checking")
)
}
}

View File

@@ -1,680 +0,0 @@
package com.lt2333.simplicitytools.activity.pages.t
import android.content.Intent
import android.net.Uri
import android.view.View
import android.widget.Switch
import android.widget.Toast
import cn.fkj233.ui.activity.MIUIActivity
import cn.fkj233.ui.activity.annotation.BMPage
import cn.fkj233.ui.activity.data.BasePage
import cn.fkj233.ui.activity.view.SpinnerV
import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog
import cn.fkj233.ui.dialog.NewDialog
import com.lt2333.simplicitytools.R
@BMPage("scope_systemui", "System UI", hideMenu = false) class SystemUIPageForT : BasePage() {
override fun onCreate() {
TitleText(textId = R.string.statusbar)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.double_tap_to_sleep), SwitchV("status_bar_double_tap_to_sleep")
)
Line()
TitleText(textId = R.string.status_bar_layout)
val statusBarLayoutMode: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.default1)
it[1] = getString(R.string.clock_center)
it[2] = getString(R.string.clock_right)
it[3] = getString(R.string.clock_center_and_icon_left)
}
TextWithSpinner(TextV(textId = R.string.status_bar_layout_mode), SpinnerV(
statusBarLayoutMode[MIUIActivity.safeSP.getInt(
"status_bar_layout_mode", 0
)].toString()
) {
add(statusBarLayoutMode[0].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 0)
}
add(statusBarLayoutMode[1].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 1)
}
add(statusBarLayoutMode[2].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 2)
}
add(statusBarLayoutMode[3].toString()) {
MIUIActivity.safeSP.putAny("status_bar_layout_mode", 3)
}
})
val layoutCompatibilityBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"layout_compatibility_mode", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.layout_compatibility_mode, tipsId = R.string.layout_compatibility_mode_summary
), SwitchV("layout_compatibility_mode", dataBindingSend = layoutCompatibilityBinding.bindingSend)
)
Text(
textId = R.string.left_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_left_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
Text(
textId = R.string.right_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_right_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.status_bar_clock_format)
val customClockPresetBinding = GetDataBinding({
MIUIActivity.safeSP.getInt(
"custom_clock_mode", 0
) == 1
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
val customClockGeekBinding = GetDataBinding({ MIUIActivity.safeSP.getInt("custom_clock_mode", 0) == 2 }
) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
val customClockMode: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.off)
it[1] = getString(R.string.preset)
it[2] = getString(R.string.geek)
}
TextWithSpinner(TextV(textId = R.string.custom_clock_mode), SpinnerV(
customClockMode[MIUIActivity.safeSP.getInt(
"custom_clock_mode", 0
)].toString()
) {
add(customClockMode[0].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 0)
customClockPresetBinding.binding.Send().send(false)
customClockGeekBinding.binding.Send().send(false)
}
add(customClockMode[1].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 1)
customClockPresetBinding.binding.Send().send(true)
customClockGeekBinding.binding.Send().send(false)
}
add(customClockMode[2].toString()) {
MIUIActivity.safeSP.putAny("custom_clock_mode", 2)
customClockPresetBinding.binding.Send().send(false)
customClockGeekBinding.binding.Send().send(true)
}
})
//预设模式起始
TextWithSwitch(
TextV(textId = R.string.status_bar_time_year),
SwitchV("status_bar_time_year"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_month),
SwitchV("status_bar_time_month"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_day),
SwitchV("status_bar_time_day"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_week),
SwitchV("status_bar_time_week"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_hour),
SwitchV("status_bar_time_double_hour"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_period),
SwitchV("status_bar_time_period", true),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_seconds),
SwitchV("status_bar_time_seconds"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_hide_space),
SwitchV("status_bar_time_hide_space"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line),
SwitchV("status_bar_time_double_line"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line_center_align),
SwitchV("status_bar_time_double_line_center_align"),
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_size, dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_size", 0, 18, 0, dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_double_line_size,
dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_double_line_size", 0, 9, 0, dataBindingRecv = customClockPresetBinding.binding.getRecv(2)
)
//预设模式结束
//极客模式起始
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_clock_format_geek) {
NewDialog(activity) {
setTitle(R.string.custom_clock_format_geek)
setEditText(
MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false
)
Button(getString(R.string.click_to_view_use_cases)) {
val locale = context.resources.configuration.locale
val language = locale.language
if (language.endsWith("zh")) {
val uri = Uri.parse("https://zhuti.designer.xiaomi.com/docs/grammar/#%E6%97%B6%E9%97%B4%E6%97%A5%E6%9C%9F")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} else {
val uri = Uri.parse("https://docs.google.com/spreadsheets/d/1ghkT2iFbxB3bT4TKCiKAfmEdGt6kTVKFU3dm4Nz1or8/edit?usp=sharing")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
}
Button(getString(R.string.Done)) {
if (getEditText().isNotEmpty()) {
try {
MIUIActivity.safeSP.putAny("custom_clock_format_geek", getEditText())
dismiss()
return@Button
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
Button(getString(R.string.cancel), cancelStyle = true) {
dismiss()
}
}.show()
}, dataBindingRecv = customClockGeekBinding.binding.getRecv(2))
TextWithSwitch(
TextV(textId = R.string.status_bar_time_double_line_center_align),
SwitchV("status_bar_time_center_align_geek"),
dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
Text(
textId = R.string.status_bar_clock_size, dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_clock_size_geek", 0, 18, 0, dataBindingRecv = customClockGeekBinding.binding.getRecv(2)
)
//极客模式结束
Line()
TitleText(textId = R.string.status_bar_icon)
TextSummaryWithArrow(
TextSummaryV(textId = R.string.hide_icon, onClickListener = { showFragment("hide_icon") })
)
TextWithSwitch(
TextV(textId = R.string.show_wifi_standard), SwitchV("show_wifi_standard")
)
val customMobileTypeTextBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"custom_mobile_type_text_switch", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.custom_mobile_type_text_switch), SwitchV(
"custom_mobile_type_text_switch", dataBindingSend = customMobileTypeTextBinding.bindingSend
)
)
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_mobile_type_text) {
MIUIDialog(activity) {
setTitle(R.string.custom_mobile_type_text)
setEditText(MIUIActivity.safeSP.getString("custom_mobile_type_text", "5G"), "")
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
MIUIActivity.safeSP.putAny("custom_mobile_type_text", getEditText())
dismiss()
return@setRButton
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
}.show()
}, dataBindingRecv = customMobileTypeTextBinding.binding.getRecv(2))
val bigMobileTypeIconBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"big_mobile_type_icon", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.big_mobile_type_icon), SwitchV(
"big_mobile_type_icon", dataBindingSend = bigMobileTypeIconBinding.bindingSend
)
)
val bigMobileTypeLocation: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.left)
it[1] = getString(R.string.right)
}
TextWithSpinner(
TextV(textId = R.string.big_mobile_type_location), SpinnerV(
bigMobileTypeLocation[MIUIActivity.safeSP.getInt(
"big_mobile_type_location", 1
)].toString()
) {
add(bigMobileTypeLocation[0].toString()) {
MIUIActivity.safeSP.putAny("big_mobile_type_location", 0)
}
add(bigMobileTypeLocation[1].toString()) {
MIUIActivity.safeSP.putAny("big_mobile_type_location", 1)
}
}, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.big_mobile_type_only_show_network_card),
SwitchV("big_mobile_type_only_show_network_card", false),
dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.big_mobile_type_icon_bold),
SwitchV("big_mobile_type_icon_bold", true),
dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithArrow(
TextSummaryV(textId = R.string.big_mobile_type_icon_size, onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_size)
setEditText(
"", "${activity.getString(R.string.def)}12.5, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("big_mobile_type_icon_size", 12.5f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_size", getEditText().toFloat()
)
}
dismiss()
}
}.show()
}), dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2)
)
TextSummaryWithArrow(TextSummaryV(textId = R.string.big_mobile_type_icon_up_and_down_position) {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_up_and_down_position)
setMessage("${activity.getString(R.string.range)} -15~15")
setEditText(
"", "${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getInt("big_mobile_type_icon_up_and_down_position", 0)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (-15..15)) {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_up_and_down_position", value
)
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
}.show()
}, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2))
TextSummaryWithArrow(TextSummaryV(textId = R.string.big_mobile_type_icon_left_and_right_margins) {
MIUIDialog(activity) {
setTitle(R.string.big_mobile_type_icon_left_and_right_margins)
setMessage("${activity.getString(R.string.range)} 0~30")
setEditText(
"", "${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getInt("big_mobile_type_icon_left_and_right_margins", 0)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (0..30)) {
MIUIActivity.safeSP.putAny(
"big_mobile_type_icon_left_and_right_margins", value
)
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show()
}
}.show()
}, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2))
Text(textId = R.string.maximum_number_of_notification_icons)
SeekBarWithText("maximum_number_of_notification_icons", 1, 30, 3)
Text(textId = R.string.maximum_number_of_notification_dots)
SeekBarWithText("maximum_number_of_notification_dots", 0, 4, 3)
TextSummaryWithArrow(
TextSummaryV(textId = R.string.battery_percentage_font_size, onClickListener = {
MIUIDialog(activity) {
setTitle(R.string.battery_percentage_font_size)
setMessage(R.string.zero_do_no_change)
setEditText(
"", "${activity.getString(R.string.current)}${
MIUIActivity.safeSP.getFloat("battery_percentage_font_size", 0f)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
MIUIActivity.safeSP.putAny(
"battery_percentage_font_size", getEditText().toFloat()
)
}
dismiss()
}
}.show()
})
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.hide_battery_percentage_icon, tipsId = R.string.hide_battery_percentage_icon_summary
), SwitchV("hide_battery_percentage_icon")
)
Line()
TitleText(textId = R.string.status_bar_network_speed)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.status_bar_network_speed_refresh_speed,
tipsId = R.string.status_bar_network_speed_refresh_speed_summary
), SwitchV("status_bar_network_speed_refresh_speed")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.hide_status_bar_network_speed_second,
tipsId = R.string.hide_status_bar_network_speed_second_summary
), SwitchV("hide_status_bar_network_speed_second")
)
TextWithSwitch(
TextV(textId = R.string.hide_network_speed_splitter), SwitchV("hide_network_speed_splitter")
)
val statusBarDualRowNetworkSpeedBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"status_bar_dual_row_network_speed", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.status_bar_dual_row_network_speed,
tipsId = R.string.status_bar_dual_row_network_speed_summary
), SwitchV(
"status_bar_dual_row_network_speed", dataBindingSend = statusBarDualRowNetworkSpeedBinding.bindingSend
)
)
val align: HashMap<Int, String> = hashMapOf()
align[0] = getString(R.string.left)
align[1] = getString(R.string.right)
TextWithSpinner(
TextV(textId = R.string.status_bar_network_speed_dual_row_gravity), SpinnerV(
align[MIUIActivity.safeSP.getInt(
"status_bar_network_speed_dual_row_gravity", 0
)].toString()
) {
add(align[0].toString()) {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_gravity", 0)
}
add(align[1].toString()) {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_gravity", 1)
}
}, dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
TextWithSpinner(TextV(textId = R.string.status_bar_network_speed_dual_row_icon), SpinnerV(
MIUIActivity.safeSP.getString(
"status_bar_network_speed_dual_row_icon", getString(R.string.none)
)
) {
add(getString(R.string.none)) {
MIUIActivity.safeSP.putAny(
"status_bar_network_speed_dual_row_icon", getString(R.string.none)
)
}
add("▲▼") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "▲▼")
}
add("△▽") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "△▽")
}
add("↑↓") {
MIUIActivity.safeSP.putAny("status_bar_network_speed_dual_row_icon", "↑↓")
}
})
Text(
textId = R.string.status_bar_network_speed_dual_row_size,
dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
SeekBarWithText(
"status_bar_network_speed_dual_row_size",
0,
9,
0,
dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.notification_center)
val showWeatherMainSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"notification_weather", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch, colorId = R.color.blue
), SwitchV(
"notification_weather", dataBindingSend = showWeatherMainSwitchBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_city,
), SwitchV("notification_weather_city"), dataBindingRecv = showWeatherMainSwitchBinding.binding.getRecv(2)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.can_notification_slide,
tipsId = R.string.can_notification_slide_summary,
),
SwitchV("can_notification_slide"),
)
Line()
TitleText(textId = R.string.control_center)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.disable_bluetooth_temporarily_off
), SwitchV(
"disable_bluetooth_temporarily_off"
)
)
val controlCenterWeatherBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"control_center_weather", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_weather_main_switch,
colorId = R.color.blue,
tipsId = R.string.control_center_weather_summary
), SwitchV(
"control_center_weather", dataBindingSend = controlCenterWeatherBinding.bindingSend
)
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.show_city,
), SwitchV("control_center_weather_city"), dataBindingRecv = controlCenterWeatherBinding.binding.getRecv(2)
)
Line()
TitleText(textId = R.string.lock_screen)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_screen_clock_display_seconds,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("lock_screen_clock_display_seconds")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_the_left_side_of_the_lock_screen,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("remove_the_left_side_of_the_lock_screen")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.remove_lock_screen_camera,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("remove_lock_screen_camera")
)
TextSummaryWithSwitch(
TextSummaryV(textId = R.string.enable_wave_charge_animation), SwitchV("enable_wave_charge_animation")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.lock_screen_charging_current,
tipsId = R.string.only_official_default_themes_are_supported
), SwitchV("lock_screen_charging_current")
)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.double_tap_to_sleep, tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("lock_screen_double_tap_to_sleep")
)
Line()
TitleText(textId = R.string.old_quick_settings_panel)
val oldQSCustomSwitchBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean(
"old_qs_custom_switch", false
)
}) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.old_qs_custom_switch, colorId = R.color.blue
), SwitchV(
"old_qs_custom_switch", dataBindingSend = oldQSCustomSwitchBinding.bindingSend
)
)
Text(
textId = R.string.qs_custom_rows, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_rows", 1, 6, 3, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_rows_horizontal, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_rows_horizontal", 1, 3, 2, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_columns, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_columns", 1, 7, 4, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
Text(
textId = R.string.qs_custom_columns_unexpanded,
dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
SeekBarWithText(
"qs_custom_columns_unexpanded", 1, 7, 5, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2)
)
}
}

View File

@@ -1,15 +1,15 @@
package com.lt2333.simplicitytools.hooks package com.lt2333.simplicitytools.hook
import com.lt2333.simplicitytools.BuildConfig import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.hooks.apps.* import com.lt2333.simplicitytools.hook.app.*
import com.lt2333.simplicitytools.hooks.rules.all.corepatch.CorePatchMainHook import com.lt2333.simplicitytools.hook.app.android.corepatch.CorePatchMainHook
import com.lt2333.simplicitytools.utils.xposed.EasyXposedInit import com.lt2333.simplicitytools.util.xposed.EasyXposedInit
import com.lt2333.simplicitytools.utils.xposed.base.AppRegister import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.IXposedHookZygoteInit import de.robv.android.xposed.IXposedHookZygoteInit
import de.robv.android.xposed.XSharedPreferences import de.robv.android.xposed.XSharedPreferences
import de.robv.android.xposed.callbacks.XC_LoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage
class MainHook : EasyXposedInit() { class XposedEntry : EasyXposedInit() {
private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config") private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override val registeredApp: List<AppRegister> = listOf( override val registeredApp: List<AppRegister> = listOf(
@@ -25,7 +25,6 @@ class MainHook : EasyXposedInit() {
ScreenShot, // 截屏 ScreenShot, // 截屏
Cast, //投屏 Cast, //投屏
RearDisplay, //背屏 RearDisplay, //背屏
PackageInstaller, // 应用包管理组件
) )
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.android.*
import com.lt2333.simplicitytools.hook.app.android.corepatch.CorePatchMainHook
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object Android : AppRegister() {
override val packageName: String = "android"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
//核心破解
CorePatchMainHook().handleLoadPackage(lpparam)
autoInitHooks(
lpparam,
DisableFlagSecure, //允许截图
DeleteOnPostNotification, //上层显示
RemoveSmallWindowRestrictions, //解除小窗限制
MaxWallpaperScale, //壁纸缩放比例
SystemPropertiesHook, //SystemPropertiesHook
AllowUntrustedTouches, //允许不受信任的触摸
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.cast.ForceSupportSendApp
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object Cast: AppRegister() {
override val packageName: String = "com.milink.service"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
ForceSupportSendApp, //强制允许所有应用接力
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.mediaeditor.UnlockUnlimitedCropping
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object MediaEditor: AppRegister() {
override val packageName: String = "com.miui.mediaeditor"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
UnlockUnlimitedCropping, //解锁裁切最小值
)
}
}

View File

@@ -0,0 +1,17 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime
import com.lt2333.simplicitytools.hook.app.miuihome.DoubleTapToSleep
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object MiuiHome: AppRegister() {
override val packageName: String = "com.miui.home"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
AlwaysDisplayTime, //时钟显示时钟
DoubleTapToSleep, //双击锁屏
)
}
}

View File

@@ -0,0 +1,21 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.powerkeeper.DoNotClearApp
import com.lt2333.simplicitytools.hook.app.powerkeeper.LockMaxFps
import com.lt2333.simplicitytools.hook.app.powerkeeper.MakeMilletMoreAggressive
import com.lt2333.simplicitytools.hook.app.powerkeeper.PreventRecoveryOfBatteryOptimizationWhitelist
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object PowerKeeper: AppRegister() {
override val packageName: String = "com.miui.powerkeeper"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
LockMaxFps, //锁定最高刷新率
PreventRecoveryOfBatteryOptimizationWhitelist, //防止恢复电池优化白名单
DoNotClearApp,//阻止杀后台
MakeMilletMoreAggressive,//使 Millet 更激进
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.reardisplay.RearDisplayWeather
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object RearDisplay: AppRegister() {
override val packageName: String = "com.xiaomi.misubscreenui"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
RearDisplayWeather, //背屏显示天气
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.screenshot.UnlockUnlimitedCropping
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object ScreenShot: AppRegister() {
override val packageName: String = "com.miui.screenshot"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
UnlockUnlimitedCropping, //锁定最高刷新率
)
}
}

View File

@@ -0,0 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.securitycenter.*
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object SecurityCenter: AppRegister() {
override val packageName: String = "com.miui.securitycenter"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
SkipWaitingTime, //跳过 5/10秒等待时间
LockOneHundred, //锁定 100分
RemoveMacroBlacklist, //去除自动连招黑名单
ShowBatteryTemperature, //显示电池温度
RemoveOpenAppConfirmationPopup, //去除打开应用弹窗
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.settings.ShowNotificationImportance
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object Settings: AppRegister() {
override val packageName: String = "com.android.settings"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
ShowNotificationImportance, //显示通知重要程度
)
}
}

View File

@@ -0,0 +1,47 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.systemui.*
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object SystemUI: AppRegister() {
override val packageName: String = "com.android.systemui"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
HideStatusBarIcon, //隐藏状态栏图标
HideBatteryIcon, //隐藏电池
HideHDIcon, //隐藏HD图标
HideSimIcon, //隐藏SIM卡图标
HideMobileActivityIcon, //隐藏移动箭头图标
HideMobileTypeIcon, //隐藏移动类型图标
HideStatusBarNetworkSpeedSecond, //隐藏状态栏网速/s
HideWifiActivityIcon, //隐藏WIFI活动箭头图标
MaximumNumberOfNotificationIcons, //通知图标上限
StatusBarNetworkSpeedRefreshSpeed, //状态栏网速秒刷新
StatusBarTimeCustomization, //状态栏时钟自定义
RemoveTheLeftSideOfTheLockScreen, //移除锁屏负一屏功能
RemoveLockScreenCamera, //移除锁屏相机功能
NotificationWeather, //通知面板天气
NewNotificationWeather, // 新控制中心天气
OldNotificationWeather,
ControlCenterWeather, //控制中心天气
//StatusBarCurrent, //TODO状态栏电流
StatusBarLayout, //状态栏布局
HideNetworkSpeedSplitter, //隐藏时钟与实时网速之间的分隔符
WaveCharge, //Alpha充电动画
LockScreenCurrent, //锁屏电流
LockScreenDoubleTapToSleep, //锁屏下双击锁屏
StatusBarDoubleTapToSleep, //双击状态栏锁屏
OldQSCustom, //旧版快速设置自定义
DoubleLineNetworkSpeed, //双排网速
StatusBarBigMobileTypeIcon, //大移动类型
BatteryPercentage, //电量百分比
CustomMobileTypeText, //自定义移动类型文本
CanNotificationSlide, //允许下滑通知打开小窗
LockScreenClockDisplaySeconds, // 锁屏时钟显示秒
ShowWifiStandard, // 显示 WIFI 角标
NoPasswordHook, // 显示 WIFI 角标
)
}
}

View File

@@ -0,0 +1,15 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.thememanager.RemoveAds
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object ThemeManager: AppRegister() {
override val packageName: String = "com.android.thememanager"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
autoInitHooks(lpparam,
RemoveAds, //移除主题壁纸的广告
)
}
}

View File

@@ -1,11 +1,10 @@
package com.lt2333.simplicitytools.hooks.apps package com.lt2333.simplicitytools.hook.app
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant
import com.github.kyuubiran.ezxhelper.utils.loadClassOrNull import com.github.kyuubiran.ezxhelper.utils.loadClassOrNull
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.AppRegister import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage
object Updater : AppRegister() { object Updater : AppRegister() {
@@ -19,15 +18,6 @@ object Updater : AppRegister() {
.firstOrNull { it.declaredFields.size >= 9 && it.declaredMethods.size > 60 } .firstOrNull { it.declaredFields.size >= 9 && it.declaredMethods.size > 60 }
?.findMethod { name == "T" && returnType == Boolean::class.java } ?.findMethod { name == "T" && returnType == Boolean::class.java }
?.hookReturnConstant(false) ?.hookReturnConstant(false)
findMethod("miui.util.FeatureParser") {
name == "hasFeature" && parameterCount == 2
}.hookBefore {
if (it.args[0] == "support_ota_validate") {
it.result = false
}
}
} }
} }
} }

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.all.android package com.lt2333.simplicitytools.hook.app.android
import android.content.Context import android.content.Context
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object AllowUntrustedTouchesForAll : HookRegister() { object AllowUntrustedTouches : HookRegister() {
override fun init() = hasEnable("allow_untrusted_touches") { override fun init() = hasEnable("allow_untrusted_touches") {
findMethod("android.hardware.input.InputManager") { findMethod("android.hardware.input.InputManager") {
name == "getBlockUntrustedTouchesMode" && parameterTypes[0] == Context::class.java name == "getBlockUntrustedTouchesMode" && parameterTypes[0] == Context::class.java

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.all.android package com.lt2333.simplicitytools.hook.app.android
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object DeleteOnPostNotificationForAll : HookRegister() { object DeleteOnPostNotification : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.server.wm.AlertWindowNotification") { findMethod("com.android.server.wm.AlertWindowNotification") {
name == "onPostNotification" name == "onPostNotification"

View File

@@ -0,0 +1,19 @@
package com.lt2333.simplicitytools.hook.app.android
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object DisableFlagSecure : HookRegister() {
override fun init() {
findMethod("com.android.server.wm.WindowState") {
name == "isSecureLocked"
}.hookBefore {
hasEnable("disable_flag_secure") {
it.result = false
}
}
}
}

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.s.android package com.lt2333.simplicitytools.hook.app.android
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object MaxWallpaperScaleForS : HookRegister() { object MaxWallpaperScale : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.server.wm.WallpaperController") { findMethod("com.android.server.wm.WallpaperController") {
name == "zoomOutToScale" && parameterTypes[0] == Float::class.java name == "zoomOutToScale" && parameterTypes[0] == Float::class.java

View File

@@ -1,13 +1,13 @@
package com.lt2333.simplicitytools.hooks.rules.s.android package com.lt2333.simplicitytools.hook.app.android
import android.content.Context import android.content.Context
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object RemoveSmallWindowRestrictionsForS : HookRegister() { object RemoveSmallWindowRestrictions : HookRegister() {
override fun init() { override fun init() {
// 强制所有活动设为可以调整大小 // 强制所有活动设为可以调整大小
findMethod("com.android.server.wm.Task") { findMethod("com.android.server.wm.Task") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.android package com.lt2333.simplicitytools.hook.app.android
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object SystemPropertiesHookForS : HookRegister() { object SystemPropertiesHook : HookRegister() {
override fun init() { override fun init() {
val mediaStepsSwitch = XSPUtils.getBoolean("media_volume_steps_switch", false) val mediaStepsSwitch = XSPUtils.getBoolean("media_volume_steps_switch", false)
val mediaSteps = XSPUtils.getInt("media_volume_steps", 15) val mediaSteps = XSPUtils.getInt("media_volume_steps", 15)

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import android.app.AndroidAppHelper; import android.app.AndroidAppHelper;
@@ -13,8 +13,6 @@ import com.lt2333.simplicitytools.BuildConfig;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.security.cert.Certificate; import java.security.cert.Certificate;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.util.List; import java.util.List;
@@ -104,7 +102,7 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
Class<?> sJarClass = XposedHelpers.findClass("android.util.jar.StrictJarFile", loadPackageParam.classLoader); Class<?> sJarClass = XposedHelpers.findClass("android.util.jar.StrictJarFile", loadPackageParam.classLoader);
Constructor<?> constructorExact = XposedHelpers.findConstructorExact(sJarClass, String.class, boolean.class, boolean.class); Constructor<?> constructorExact = XposedHelpers.findConstructorExact(sJarClass, String.class, boolean.class, boolean.class);
constructorExact.setAccessible(true); constructorExact.setAccessible(true);
Class<?> signingDetails = getSigningDetails(loadPackageParam.classLoader); Class<?> signingDetails = XposedHelpers.findClass("android.content.pm.PackageParser.SigningDetails", loadPackageParam.classLoader);
Constructor<?> findConstructorExact = XposedHelpers.findConstructorExact(signingDetails, Signature[].class, Integer.TYPE); Constructor<?> findConstructorExact = XposedHelpers.findConstructorExact(signingDetails, Signature[].class, Integer.TYPE);
findConstructorExact.setAccessible(true); findConstructorExact.setAccessible(true);
Class<?> packageParserException = XposedHelpers.findClass("android.content.pm.PackageParser.PackageParserException", loadPackageParam.classLoader); Class<?> packageParserException = XposedHelpers.findClass("android.content.pm.PackageParser.PackageParserException", loadPackageParam.classLoader);
@@ -112,7 +110,6 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
error.setAccessible(true); error.setAccessible(true);
Object[] signingDetailsArgs = new Object[2]; Object[] signingDetailsArgs = new Object[2];
signingDetailsArgs[1] = 1; signingDetailsArgs[1] = 1;
Class<?> parseResult = XposedHelpers.findClassIfExists("android.content.pm.parsing.result.ParseResult", loadPackageParam.classLoader);
hookAllMethods("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader, "verifyBytes", new XC_MethodHook() { hookAllMethods("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader, "verifyBytes", new XC_MethodHook() {
public void afterHookedMethod(MethodHookParam param) throws Throwable { public void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param); super.afterHookedMethod(param);
@@ -130,49 +127,27 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
}); });
hookAllMethods("android.util.apk.ApkSignatureVerifier", loadPackageParam.classLoader, "verifyV1Signature", new XC_MethodHook() { hookAllMethods("android.util.apk.ApkSignatureVerifier", loadPackageParam.classLoader, "verifyV1Signature", new XC_MethodHook() {
public void afterHookedMethod(MethodHookParam methodHookParam) throws Throwable { public void afterHookedMethod(MethodHookParam methodHookParam) throws Throwable {
super.afterHookedMethod(methodHookParam);
if (prefs.getBoolean("authcreak", true)) { if (prefs.getBoolean("authcreak", true)) {
Throwable throwable = methodHookParam.getThrowable(); Throwable throwable = methodHookParam.getThrowable();
Integer parseErr = null; if (throwable != null) {
if (parseResult != null && ((Method) methodHookParam.method).getReturnType() == parseResult) {
Object result = methodHookParam.getResult();
if ((boolean) XposedHelpers.callMethod(result, "isError")) {
parseErr = (int) XposedHelpers.callMethod(result, "getErrorCode");
}
}
if (throwable != null || parseErr != null) {
Signature[] lastSigs = null; Signature[] lastSigs = null;
try { if (prefs.getBoolean("UsePreSig", false)) {
if (prefs.getBoolean("UsePreSig", false)) { PackageManager PM = AndroidAppHelper.currentApplication().getPackageManager();
PackageManager PM = AndroidAppHelper.currentApplication().getPackageManager(); if (PM == null) {
if (PM == null) { XposedBridge.log("E: " + BuildConfig.APPLICATION_ID + " Cannot get the Package Manager... Are you using MiUI?");
XposedBridge.log("E: " + BuildConfig.APPLICATION_ID + " Cannot get the Package Manager... Are you using MiUI?"); } else {
} else { PackageInfo pI = PM.getPackageArchiveInfo((String) methodHookParam.args[0], 0);
PackageInfo pI; PackageInfo InstpI = PM.getPackageInfo(pI.packageName, PackageManager.GET_SIGNATURES);
if (parseErr != null) { lastSigs = InstpI.signatures;
pI = PM.getPackageArchiveInfo((String) methodHookParam.args[1], 0);
} else {
pI = PM.getPackageArchiveInfo((String) methodHookParam.args[0], 0);
}
PackageInfo InstpI = PM.getPackageInfo(pI.packageName, PackageManager.GET_SIGNATURES);
lastSigs = InstpI.signatures;
}
} }
} catch (Throwable ignored) { } else {
if (prefs.getBoolean("digestCreak", true)) {
} final Object origJarFile = constructorExact.newInstance(methodHookParam.args[0], true, false);
try {
if (lastSigs == null && prefs.getBoolean("digestCreak", true)) {
final Object origJarFile = constructorExact.newInstance(methodHookParam.args[parseErr == null ? 0 : 1], true, false);
final ZipEntry manifestEntry = (ZipEntry) XposedHelpers.callMethod(origJarFile, "findEntry", "AndroidManifest.xml"); final ZipEntry manifestEntry = (ZipEntry) XposedHelpers.callMethod(origJarFile, "findEntry", "AndroidManifest.xml");
final Certificate[][] lastCerts; final Certificate[][] lastCerts = (Certificate[][]) XposedHelpers.callStaticMethod(ASV, "loadCertificates", origJarFile, manifestEntry);
if (parseErr != null) {
lastCerts = (Certificate[][]) XposedHelpers.callMethod(XposedHelpers.callStaticMethod(ASV, "loadCertificates", methodHookParam.args[0], origJarFile, manifestEntry), "getResult");
} else {
lastCerts = (Certificate[][]) XposedHelpers.callStaticMethod(ASV, "loadCertificates", origJarFile, manifestEntry);
}
lastSigs = (Signature[]) XposedHelpers.callStaticMethod(ASV, "convertToSignatures", (Object) lastCerts); lastSigs = (Signature[]) XposedHelpers.callStaticMethod(ASV, "convertToSignatures", (Object) lastCerts);
} }
} catch (Throwable ignored) {
} }
if (lastSigs != null) { if (lastSigs != null) {
signingDetailsArgs[0] = lastSigs; signingDetailsArgs[0] = lastSigs;
@@ -188,23 +163,17 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
signingDetailsWithDigestsConstructorExact.setAccessible(true); signingDetailsWithDigestsConstructorExact.setAccessible(true);
newInstance = signingDetailsWithDigestsConstructorExact.newInstance(new Object[]{newInstance, null}); newInstance = signingDetailsWithDigestsConstructorExact.newInstance(new Object[]{newInstance, null});
} }
if (throwable != null) {
Throwable cause = throwable.getCause(); Throwable cause = throwable.getCause();
if (throwable.getClass() == packageParserException) { if (throwable.getClass() == packageParserException) {
if (error.getInt(throwable) == -103) { if (error.getInt(throwable) == -103) {
methodHookParam.setResult(newInstance); methodHookParam.setResult(newInstance);
}
}
if (cause != null && cause.getClass() == packageParserException) {
if (error.getInt(cause) == -103) {
methodHookParam.setResult(newInstance);
}
} }
} }
if (parseErr != null && parseErr == -103) { if (cause != null && cause.getClass() == packageParserException) {
Object input = methodHookParam.args[0]; if (error.getInt(cause) == -103) {
XposedHelpers.callMethod(input, "reset"); methodHookParam.setResult(newInstance);
methodHookParam.setResult(XposedHelpers.callMethod(input, "success", newInstance)); }
} }
} }
} }
@@ -239,23 +208,6 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
} }
} }
}); });
var utilClass = findClass("com.android.server.pm.PackageManagerServiceUtils", loadPackageParam.classLoader);
if (utilClass != null) {
for (var m : utilClass.getDeclaredMethods()) {
if ("verifySignatures".equals(m.getName())) {
try {
XposedBridge.class.getDeclaredMethod("deoptimizeMethod", Member.class).invoke(null, m);
} catch (Throwable e) {
Log.e("CorePatch", "deoptimizing failed", e);
}
}
}
}
}
Class<?> getSigningDetails(ClassLoader classLoader) {
return XposedHelpers.findClass("android.content.pm.PackageParser.SigningDetails", classLoader);
} }
@Override @Override

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;

View File

@@ -0,0 +1,4 @@
package com.lt2333.simplicitytools.hook.app.android.corepatch;
public class CorePatchForSv2 extends CorePatchForS{
}

View File

@@ -1,8 +1,9 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import android.util.Log; import android.util.Log;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Member;
import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedBridge;
@@ -20,7 +21,8 @@ public class CorePatchForT extends CorePatchForSv2 {
"android.content.pm.PackageInfoLite", "android.content.pm.PackageInfoLite",
new ReturnConstant(prefs, "downgrade", null)); new ReturnConstant(prefs, "downgrade", null));
Class<?> signingDetails = getSigningDetails(loadPackageParam.classLoader); var utilClass = findClass("com.android.server.pm.PackageManagerServiceUtils", loadPackageParam.classLoader);
Class<?> signingDetails = XposedHelpers.findClass("android.content.pm.SigningDetails", loadPackageParam.classLoader);
//New package has a different signature //New package has a different signature
//处理覆盖安装但签名不一致 //处理覆盖安装但签名不一致
hookAllMethods(signingDetails, "checkCapability", new XC_MethodHook() { hookAllMethods(signingDetails, "checkCapability", new XC_MethodHook() {
@@ -35,6 +37,17 @@ public class CorePatchForT extends CorePatchForSv2 {
} }
}); });
if (utilClass != null) {
for (var m : utilClass.getDeclaredMethods()) {
if ("verifySignatures".equals(m.getName())) {
try {
XposedBridge.class.getDeclaredMethod("deoptimizeMethod", Member.class).invoke(null, m);
} catch (Throwable e) {
Log.e("CorePatch", "deoptimizing failed", e);
}
}
}
}
// Package " + packageName + " signatures do not match previously installed version; ignoring!" // Package " + packageName + " signatures do not match previously installed version; ignoring!"
// public boolean checkCapability(String sha256String, @CertCapabilities int flags) { // public boolean checkCapability(String sha256String, @CertCapabilities int flags) {
// public boolean checkCapability(SigningDetails oldDetails, @CertCapabilities int flags) // public boolean checkCapability(SigningDetails oldDetails, @CertCapabilities int flags)
@@ -68,29 +81,5 @@ public class CorePatchForT extends CorePatchForSv2 {
} }
}); });
} }
findAndHookMethod("com.android.server.pm.ScanPackageUtils", loadPackageParam.classLoader, "assertMinSignatureSchemeIsValid", "com.android.server.pm.parsing.pkg.AndroidPackage", int.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
if (prefs.getBoolean("authcreak", true)) {
param.setResult(null);
}
}
});
Class<?> strictJarVerifier = findClass("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader);
if (strictJarVerifier != null) {
XposedBridge.hookAllConstructors(strictJarVerifier, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
if (prefs.getBoolean("authcreak", true)) {
XposedHelpers.setBooleanField(param.thisObject, "signatureSchemeRollbackProtectionsEnforced", false);
}
}
});
}
}
@Override
Class<?> getSigningDetails(ClassLoader classLoader) {
return XposedHelpers.findClassIfExists("android.content.pm.SigningDetails", classLoader);
} }
} }

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences; import de.robv.android.xposed.XSharedPreferences;

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.corepatch; package com.lt2333.simplicitytools.hook.app.android.corepatch;
import com.lt2333.simplicitytools.BuildConfig; import com.lt2333.simplicitytools.BuildConfig;

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.all.cast package com.lt2333.simplicitytools.hook.app.cast
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object ForceSupportSendAppForAll : HookRegister() { object ForceSupportSendApp : HookRegister() {
override fun init() = hasEnable("force_support_send_app") { override fun init() = hasEnable("force_support_send_app") {
findMethod("com.xiaomi.mirror.synergy.MiuiSynergySdk") { findMethod("com.xiaomi.mirror.synergy.MiuiSynergySdk") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.mediaeditor package com.lt2333.simplicitytools.hook.app.mediaeditor
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object UnlockUnlimitedCroppingForS : HookRegister() { object UnlockUnlimitedCropping : HookRegister() {
override fun init() { override fun init() {
//解锁图库裁切最小值 //解锁图库裁切最小值

View File

@@ -0,0 +1,20 @@
package com.lt2333.simplicitytools.hook.app.miuihome
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object AlwaysDisplayTime : HookRegister() {
override fun init() {
findMethod("com.miui.home.launcher.Workspace") {
name == "isScreenHasClockGadget" && parameterCount == 1
}.hookBefore {
hasEnable("home_time") {
it.result = false
}
}
}
}

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.miuihome package com.lt2333.simplicitytools.hook.app.miuihome
import android.content.Context import android.content.Context
import android.os.SystemClock import android.os.SystemClock
@@ -6,7 +6,7 @@ import android.view.MotionEvent
import android.view.ViewConfiguration import android.view.ViewConfiguration
import kotlin.math.abs import kotlin.math.abs
class DoubleTapControllerForAll internal constructor(mContext: Context) { class DoubleTapController internal constructor(mContext: Context) {
private val maxDuration: Long = 500 private val maxDuration: Long = 500
private var mActionDownRawX: Float = 0f private var mActionDownRawX: Float = 0f

View File

@@ -1,21 +1,21 @@
package com.lt2333.simplicitytools.hooks.rules.all.miuihome package com.lt2333.simplicitytools.hook.app.miuihome
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.view.MotionEvent import android.view.MotionEvent
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.XposedHelpers
object DoubleTapToSleepForAll : HookRegister() { object DoubleTapToSleep : HookRegister() {
override fun init() = hasEnable("double_tap_to_sleep") { override fun init() = hasEnable("double_tap_to_sleep") {
hookAllConstructorAfter("com.miui.home.launcher.Workspace") { hookAllConstructorAfter("com.miui.home.launcher.Workspace") {
var mDoubleTapControllerEx = var mDoubleTapControllerEx =
XposedHelpers.getAdditionalInstanceField(it.thisObject, "mDoubleTapControllerEx") XposedHelpers.getAdditionalInstanceField(it.thisObject, "mDoubleTapControllerEx")
if (mDoubleTapControllerEx != null) return@hookAllConstructorAfter if (mDoubleTapControllerEx != null) return@hookAllConstructorAfter
mDoubleTapControllerEx = DoubleTapControllerForAll((it.args[0] as Context)) mDoubleTapControllerEx = DoubleTapController((it.args[0] as Context))
XposedHelpers.setAdditionalInstanceField( XposedHelpers.setAdditionalInstanceField(
it.thisObject, it.thisObject,
"mDoubleTapControllerEx", "mDoubleTapControllerEx",
@@ -28,7 +28,7 @@ object DoubleTapToSleepForAll : HookRegister() {
val mDoubleTapControllerEx = XposedHelpers.getAdditionalInstanceField( val mDoubleTapControllerEx = XposedHelpers.getAdditionalInstanceField(
it.thisObject, it.thisObject,
"mDoubleTapControllerEx" "mDoubleTapControllerEx"
) as DoubleTapControllerForAll ) as DoubleTapController
if (!mDoubleTapControllerEx.isDoubleTapEvent(it.args[0] as MotionEvent)) return@hookBefore if (!mDoubleTapControllerEx.isDoubleTapEvent(it.args[0] as MotionEvent)) return@hookBefore
val mCurrentScreenIndex = it.thisObject.getObject("mCurrentScreenIndex") as Int val mCurrentScreenIndex = it.thisObject.getObject("mCurrentScreenIndex") as Int
val cellLayout = it.thisObject.invokeMethodAuto("getCellLayout", mCurrentScreenIndex) val cellLayout = it.thisObject.invokeMethodAuto("getCellLayout", mCurrentScreenIndex)

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.powerkeeper package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object DoNotClearAppForS : HookRegister() { object DoNotClearApp : HookRegister() {
override fun init() { override fun init() {
findMethod("com.miui.powerkeeper.statemachine.SleepModeControllerNew") { findMethod("com.miui.powerkeeper.statemachine.SleepModeControllerNew") {
name == "clearApp" name == "clearApp"

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.all.powerkeeper package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object LockMaxFpsForAll: HookRegister() { object LockMaxFps : HookRegister() {
override fun init() { override fun init() {
findMethod("com.miui.powerkeeper.statemachine.DisplayFrameSetting") { findMethod("com.miui.powerkeeper.statemachine.DisplayFrameSetting") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.powerkeeper package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object MakeMilletMoreAggressiveForS : HookRegister() { object MakeMilletMoreAggressive : HookRegister() {
override fun init() { override fun init() {
findMethod("com.miui.powerkeeper.controller.FrozenAppController") { findMethod("com.miui.powerkeeper.controller.FrozenAppController") {
name == "appIsAllowToFrozen" name == "appIsAllowToFrozen"

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.powerkeeper package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object PreventRecoveryOfBatteryOptimizationWhitelistForS : HookRegister() { object PreventRecoveryOfBatteryOptimizationWhitelist : HookRegister() {
override fun init() { override fun init() {
findMethod( findMethod(

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.all.reardisplay package com.lt2333.simplicitytools.hook.app.reardisplay
import android.graphics.Typeface import android.graphics.Typeface
import android.util.TypedValue import android.util.TypedValue
@@ -11,11 +11,11 @@ import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.views.WeatherView import com.lt2333.simplicitytools.view.WeatherView
object RearDisplayWeatherForAll : HookRegister() { object RearDisplayWeather : HookRegister() {
override fun init() = hasEnable("rear_show_weather") { override fun init() = hasEnable("rear_show_weather") {
findMethod("com.xiaomi.misubscreenui.light.aod.view.VerticalClockView") { findMethod("com.xiaomi.misubscreenui.light.aod.view.VerticalClockView") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.screenshot package com.lt2333.simplicitytools.hook.app.screenshot
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object UnlockUnlimitedCroppingForS : HookRegister() { object UnlockUnlimitedCropping : HookRegister() {
override fun init() { override fun init() {
//截图无限裁切 //截图无限裁切

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.all.securitycenter package com.lt2333.simplicitytools.hook.app.securitycenter
import android.view.View import android.view.View
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object LockOneHundredForAll : HookRegister() { object LockOneHundred : HookRegister() {
override fun init() { override fun init() {
//防止点击重新检测 //防止点击重新检测

View File

@@ -0,0 +1,31 @@
package com.lt2333.simplicitytools.hook.app.securitycenter
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
object RemoveMacroBlacklist : HookRegister() {
override fun init() {
if (XSPUtils.getBoolean("remove_macro_blacklist", false)) {
var letter = 'a'
for (i in 0..25) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.gamebooster.v.$letter" + "0", getDefaultClassLoader()
) ?: continue
if (classIfExists.declaredMethods.size in 6..12 && classIfExists.fields.isEmpty() && classIfExists.declaredFields.size >= 2) {
XposedHelpers.findAndHookMethod(classIfExists, "c", String::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam?) {
param?.result = false
}
})
return
}
letter++
}
}
}
}

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.all.securitycenter package com.lt2333.simplicitytools.hook.app.securitycenter
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object RemoveOpenAppConfirmationPopupForAll : HookRegister() { object RemoveOpenAppConfirmationPopup : HookRegister() {
override fun init() { override fun init() {
findMethod("android.widget.TextView") { findMethod("android.widget.TextView") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.securitycenter package com.lt2333.simplicitytools.hook.app.securitycenter
import android.app.AndroidAppHelper import android.app.AndroidAppHelper
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
@@ -17,9 +17,11 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object ShowBatteryTemperatureForS : HookRegister() {
object ShowBatteryTemperature : HookRegister() {
private fun getBatteryTemperature(context: Context): Int { private fun getBatteryTemperature(context: Context): Int {
return context.registerReceiver( return context.registerReceiver(
null as BroadcastReceiver?, null as BroadcastReceiver?,
@@ -32,18 +34,19 @@ object ShowBatteryTemperatureForS : HookRegister() {
findMethod("com.miui.powercenter.a") { findMethod("com.miui.powercenter.a") {
name == "b" && parameterTypes[0] == Context::class.java name == "b" && parameterTypes[0] == Context::class.java
} }
} catch (e: Exception) { } catch (e : Exception) {
findMethod("com.miui.powercenter.BatteryFragment") { findMethod("com.miui.powercenter.BatteryFragment") {
name == "b" && parameterTypes[0] == Context::class.java name == "b" && parameterTypes[0] == Context::class.java
} }
}.hookBefore { }.hookBefore {
it.result = getBatteryTemperature(it.args[0] as Context).toString() it.result = getBatteryTemperature(it.args[0] as Context).toString()
} }
try { try {
findMethod("com.miui.powercenter.a\$a") { findMethod("com.miui.powercenter.a\$a") {
name == "run" name == "run"
} }
} catch (e: Exception) { } catch (e : Exception) {
findMethod("com.miui.powercenter.BatteryFragment\$a") { findMethod("com.miui.powercenter.BatteryFragment\$a") {
name == "run" name == "run"
} }
@@ -97,4 +100,5 @@ object ShowBatteryTemperatureForS : HookRegister() {
linearLayout.addView(tempView) linearLayout.addView(tempView)
} }
} }
} }

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.all.securitycenter package com.lt2333.simplicitytools.hook.app.securitycenter
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object SkipWaitingTimeForAll : HookRegister() { object SkipWaitingTime : HookRegister() {
override fun init() { override fun init() {
findMethod("android.widget.TextView") { findMethod("android.widget.TextView") {

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.all.settings package com.lt2333.simplicitytools.hook.app.settings
import android.app.NotificationChannel import android.app.NotificationChannel
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.XposedHelpers
object ShowNotificationImportanceForAll : HookRegister() { object ShowNotificationImportance : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.settings.notification.ChannelNotificationSettings") { findMethod("com.android.settings.notification.ChannelNotificationSettings") {

View File

@@ -1,14 +1,14 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.util.TypedValue import android.util.TypedValue
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object BatteryPercentageForT : HookRegister() { object BatteryPercentage : HookRegister() {
override fun init() { override fun init() {
val size = XSPUtils.getFloat("battery_percentage_font_size", 0f) val size = XSPUtils.getFloat("battery_percentage_font_size", 0f)

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object CanNotificationSlideForT: HookRegister() { object CanNotificationSlide: HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.notification.NotificationSettingsManager") { findMethod("com.android.systemui.statusbar.notification.NotificationSettingsManager") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent import android.content.Intent
@@ -10,13 +10,13 @@ import android.widget.Toast
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.SystemProperties import com.lt2333.simplicitytools.util.SystemProperties
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.views.WeatherView import com.lt2333.simplicitytools.view.WeatherView
object ControlCenterWeatherForS : HookRegister() { object ControlCenterWeather : HookRegister() {
override fun init() = hasEnable("control_center_weather") { override fun init() = hasEnable("control_center_weather") {
var mWeatherView: TextView? = null var mWeatherView: TextView? = null

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object CustomMobileTypeTextForS : HookRegister() { object CustomMobileTypeText : HookRegister() {
override fun init() = hasEnable("custom_mobile_type_text_switch") { override fun init() = hasEnable("custom_mobile_type_text_switch") {
findMethod("com.android.systemui.statusbar.policy.MobileSignalController") { findMethod("com.android.systemui.statusbar.policy.MobileSignalController") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context import android.content.Context
import android.net.TrafficStats import android.net.TrafficStats
@@ -11,12 +11,12 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.text.DecimalFormat import java.text.DecimalFormat
object DoubleLineNetworkSpeedForT : HookRegister() { object DoubleLineNetworkSpeed : HookRegister() {
private var mLastTotalUp: Long = 0 private var mLastTotalUp: Long = 0
private var mLastTotalDown: Long = 0 private var mLastTotalDown: Long = 0
@@ -60,11 +60,11 @@ object DoubleLineNetworkSpeedForT : HookRegister() {
name == "formatSpeed" && parameterCount == 2 name == "formatSpeed" && parameterCount == 2
}.hookBefore { }.hookBefore {
if (getDualAlign == 0) { if (getDualAlign == 0) {
it.result = "$upIcon ${getTotalUpSpeed(it.args[0] as Context)}\n$downIcon ${ it.result = "$upIcon ${getTotalUpSpeed(it.args[0] as Context)}\n${downIcon} ${
getTotalDownloadSpeed(it.args[0] as Context) getTotalDownloadSpeed(it.args[0] as Context)
}" }"
} else { } else {
it.result = "${getTotalUpSpeed(it.args[0] as Context)} $upIcon\n${ it.result = "${getTotalUpSpeed(it.args[0] as Context)} ${upIcon}\n${
getTotalDownloadSpeed(it.args[0] as Context) getTotalDownloadSpeed(it.args[0] as Context)
} $downIcon" } $downIcon"
} }

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.FrameLayout import android.widget.FrameLayout
@@ -8,10 +8,10 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObject import com.github.kyuubiran.ezxhelper.utils.getObject
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object HideBatteryIconForS : HookRegister() { object HideBatteryIcon : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.views.MiuiBatteryMeterView") { findMethod("com.android.systemui.statusbar.views.MiuiBatteryMeterView") {

View File

@@ -1,13 +1,15 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.util.Log
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
object HideHDIconForS : HookRegister() { object HideHDIcon : HookRegister() {
override fun init() { override fun init() {

View File

@@ -1,15 +1,15 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
object HideMobileActivityIconForS : HookRegister() { object HideMobileActivityIcon : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.StatusBarMobileView") { findMethod("com.android.systemui.statusbar.StatusBarMobileView") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
@@ -6,12 +6,12 @@ import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
object HideMobileTypeIconForS : HookRegister() { object HideMobileTypeIcon : HookRegister() {
private val isBigType = XSPUtils.getBoolean("big_mobile_type_icon", false) private val isBigType = XSPUtils.getBoolean("big_mobile_type_icon", false)

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object HideNetworkSpeedSplitterForS : HookRegister() { object HideNetworkSpeedSplitter : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.views.NetworkSpeedSplitter") { findMethod("com.android.systemui.statusbar.views.NetworkSpeedSplitter") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object HideSimIconForS : HookRegister() { object HideSimIcon : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.phone.StatusBarSignalPolicy") { findMethod("com.android.systemui.statusbar.phone.StatusBarSignalPolicy") {

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
object HideStatusBarIconForS : HookRegister() { object HideStatusBarIcon : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.phone.StatusBarIconControllerImpl") { findMethod("com.android.systemui.statusbar.phone.StatusBarIconControllerImpl") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object HideStatusBarNetworkSpeedSecondForS : HookRegister() { object HideStatusBarNetworkSpeedSecond : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.views.NetworkSpeedView") { findMethod("com.android.systemui.statusbar.views.NetworkSpeedView") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
@@ -6,11 +6,11 @@ import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
object HideWifiActivityIconForT : HookRegister() { object HideWifiActivityIcon : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.StatusBarWifiView") { findMethod("com.android.systemui.statusbar.StatusBarWifiView") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
@@ -8,14 +8,14 @@ import android.util.Log
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook import de.robv.android.xposed.XC_MethodHook
import java.lang.reflect.Method import java.lang.reflect.Method
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
object LockScreenClockDisplaySecondsForS : HookRegister() { object LockScreenClockDisplaySeconds : HookRegister() {
private var nowTime: Date = Calendar.getInstance().time private var nowTime: Date = Calendar.getInstance().time

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.app.AndroidAppHelper import android.app.AndroidAppHelper
@@ -10,13 +10,13 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObject import com.github.kyuubiran.ezxhelper.utils.getObject
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.io.BufferedReader import java.io.BufferedReader
import java.io.FileReader import java.io.FileReader
import kotlin.math.abs import kotlin.math.abs
object LockScreenCurrentForS : HookRegister() { object LockScreenCurrent : HookRegister() {
override fun init() = hasEnable("lock_screen_charging_current") { override fun init() = hasEnable("lock_screen_charging_current") {
findMethod("com.android.keyguard.charge.ChargeUtils") { findMethod("com.android.keyguard.charge.ChargeUtils") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
@@ -8,12 +8,12 @@ import android.view.View
import android.view.View.OnTouchListener import android.view.View.OnTouchListener
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.XposedHelpers
import kotlin.math.abs import kotlin.math.abs
object LockScreenDoubleTapToSleepForS : HookRegister() { object LockScreenDoubleTapToSleep : HookRegister() {
override fun init() = hasEnable("lock_screen_double_tap_to_sleep") { override fun init() = hasEnable("lock_screen_double_tap_to_sleep") {
findMethod("com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer") { findMethod("com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer") {

View File

@@ -1,13 +1,13 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookReplace import com.github.kyuubiran.ezxhelper.utils.hookReplace
import com.github.kyuubiran.ezxhelper.utils.invokeMethod import com.github.kyuubiran.ezxhelper.utils.invokeMethod
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object MaximumNumberOfNotificationIconsForS : HookRegister() { object MaximumNumberOfNotificationIcons : HookRegister() {
override fun init() { override fun init() {
val icons = XSPUtils.getInt("maximum_number_of_notification_icons", 3) val icons = XSPUtils.getInt("maximum_number_of_notification_icons", 3)

View File

@@ -1,17 +1,17 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.views.WeatherData import com.lt2333.simplicitytools.view.WeatherData
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
object NewNotificationWeatherForS : HookRegister() { object NewNotificationWeather : HookRegister() {
lateinit var weather: WeatherData lateinit var weather: WeatherData
var clockId: Int = -2 var clockId: Int = -2
@@ -27,6 +27,7 @@ object NewNotificationWeatherForS : HookRegister() {
val time = it.args[0]?.toString() val time = it.args[0]?.toString()
val view = it.thisObject as TextView val view = it.thisObject as TextView
if (view.id == clockId && time != null && this::weather.isInitialized) { if (view.id == clockId && time != null && this::weather.isInitialized) {
// TODO("调高天气位置")
// val layout = view.layoutParams as ViewGroup.MarginLayoutParams // val layout = view.layoutParams as ViewGroup.MarginLayoutParams
// val y = view.height / 2 // val y = view.height / 2
// layout.topMargin = -y // layout.topMargin = -y

View File

@@ -0,0 +1,21 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object NoPasswordHook : HookRegister() {
override fun init() {
hasEnable("no_need_to_enter_password_when_power_on") {
findMethod("com.android.internal.widget.LockPatternUtils\$StrongAuthTracker") { name == "isBiometricAllowedForUser" }.hookBefore {
it.result = true
}
findMethod("com.android.internal.widget.LockPatternUtils") { name == "isBiometricAllowedForUser" }.hookBefore {
it.result = true
}
}
}
}

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent import android.content.Intent
@@ -10,13 +10,13 @@ import android.widget.Toast
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.SystemProperties import com.lt2333.simplicitytools.util.SystemProperties
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.views.WeatherView import com.lt2333.simplicitytools.view.WeatherView
object NotificationWeatherForS : HookRegister() { object NotificationWeather : HookRegister() {
override fun init() = hasEnable("notification_weather") { override fun init() = hasEnable("notification_weather") {
var mWeatherView: TextView? = null var mWeatherView: TextView? = null

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.ComponentName import android.content.ComponentName
import android.content.Intent import android.content.Intent
@@ -7,12 +7,12 @@ import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.views.WeatherView import com.lt2333.simplicitytools.view.WeatherView
object OldNotificationWeatherForT : HookRegister() { object OldNotificationWeather : HookRegister() {
override fun init() = hasEnable("notification_weather") { override fun init() = hasEnable("notification_weather") {
var mWeatherView: TextView? = null var mWeatherView: TextView? = null

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.res.Configuration import android.content.res.Configuration
import android.view.ViewGroup import android.view.ViewGroup
@@ -6,11 +6,11 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object OldQSCustomForT : HookRegister() { object OldQSCustom : HookRegister() {
override fun init() = hasEnable("old_qs_custom_switch") { override fun init() = hasEnable("old_qs_custom_switch") {
val mRows = XSPUtils.getInt("qs_custom_rows", 3) val mRows = XSPUtils.getInt("qs_custom_rows", 3)

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
@@ -6,10 +6,10 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObject import com.github.kyuubiran.ezxhelper.utils.getObject
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object RemoveLockScreenCameraForT : HookRegister() { object RemoveLockScreenCamera : HookRegister() {
override fun init() { override fun init() {
//屏蔽右下角组件显示 //屏蔽右下角组件显示

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object RemoveTheLeftSideOfTheLockScreenForS : HookRegister() { object RemoveTheLeftSideOfTheLockScreen : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer") { findMethod("com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer") {

View File

@@ -1,13 +1,13 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.getObjectAs import com.github.kyuubiran.ezxhelper.utils.getObjectAs
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object ShowWifiStandardForS : HookRegister() { object ShowWifiStandard : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.StatusBarWifiView") { findMethod("com.android.systemui.statusbar.StatusBarWifiView") {

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context import android.content.Context
import android.content.res.Resources import android.content.res.Resources
@@ -13,12 +13,12 @@ import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object StatusBarBigMobileTypeIconForS : HookRegister() { object StatusBarBigMobileTypeIcon : HookRegister() {
private val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0) private val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0)
private val leftAndRightMargin = private val leftAndRightMargin =

View File

@@ -1,4 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context import android.content.Context
import android.os.SystemClock import android.os.SystemClock
@@ -7,12 +7,12 @@ import android.view.View.OnTouchListener
import android.view.ViewGroup import android.view.ViewGroup
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers import de.robv.android.xposed.XposedHelpers
import kotlin.math.abs import kotlin.math.abs
object StatusBarDoubleTapToSleepForT : HookRegister() { object StatusBarDoubleTapToSleep : HookRegister() {
override fun init() = hasEnable("status_bar_double_tap_to_sleep") { override fun init() = hasEnable("status_bar_double_tap_to_sleep") {
findMethod("com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView") { findMethod("com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView") {

View File

@@ -1,5 +1,4 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
@@ -13,15 +12,14 @@ import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object StatusBarLayout : HookRegister() {
object StatusBarLayoutForS : HookRegister() {
private val getMode = XSPUtils.getInt("status_bar_layout_mode", 0) private val getMode = XSPUtils.getInt("status_bar_layout_mode", 0)
private val isCompatibilityMode = XSPUtils.getBoolean("layout_compatibility_mode", false) private val getHoleLocation = XSPUtils.getInt("screen_hole_location", 0)
private var statusBarLeft = 0 private var statusBarLeft = 0
private var statusBarTop = 0 private var statusBarTop = 0
@@ -34,31 +32,23 @@ object StatusBarLayoutForS : HookRegister() {
var mCenterLayout: LinearLayout? var mCenterLayout: LinearLayout?
var statusBar: ViewGroup? = null var statusBar: ViewGroup? = null
//判断屏幕状态更新布局 mode: 1正常布局 2居中布局 fun updateLayout(context: Context) {
fun updateLayout(context: Context,mode: Int) { //判断屏幕方向
when(mode){ val mConfiguration: Configuration = context.resources.configuration
1->{ if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
val mConfiguration: Configuration = context.resources.configuration mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏 mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(statusBarLeft, statusBarTop, statusBarRight, statusBarBottom) statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
} } else {
} //横屏状态
2->{ mLeftLayout!!.setPadding(175, 0, 0, 0)
val mConfiguration: Configuration = context.resources.configuration mRightLayout!!.setPadding(0, 0, 175, 0)
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏 statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}else{ //竖屏
mLeftLayout!!.setPadding(0, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 0, 0)
}
}
} }
} }
//判断是否开启挖孔兼容模式 //判断是否开启居中挖孔兼容模式
if (isCompatibilityMode) { if (getHoleLocation == 1) {
findMethod("com.android.systemui.ScreenDecorations\$DisplayCutoutView") { findMethod("com.android.systemui.ScreenDecorations\$DisplayCutoutView") {
name == "boundsFromDirection" && parameterCount == 3 && isStatic name == "boundsFromDirection" && parameterCount == 3 && isStatic
}.hookBefore { }.hookBefore {
@@ -66,83 +56,48 @@ object StatusBarLayoutForS : HookRegister() {
} }
} }
//修改对应布局
when (getMode) { when (getMode) {
//默认 //默认
0 -> { 0 -> return
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfter
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
//时钟居中 //时钟居中
1 -> { 1 -> {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
val statusBarContentsId: Int = res.getIdentifier( res.getIdentifier("status_bar", "id", "com.android.systemui")
"status_bar_contents", "id", "com.android.systemui" val statusBarContentsId: Int =
) res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui") val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier( val phoneStatusBarLeftContainerId: Int =
"phone_status_bar_left_container", "id", "com.android.systemui" res.getIdentifier(
) "phone_status_bar_left_container",
val notificationIconAreaInnerId: Int = res.getIdentifier( "id",
"notification_icon_area_inner", "id", "com.android.systemui" "com.android.systemui"
) )
val notificationIconAreaInnerId: Int =
res.getIdentifier(
"notification_icon_area_inner",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId) val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId) val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById( val phoneStatusBarLeftContainer: ViewGroup =
phoneStatusBarLeftContainerId miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
) val notificationIconAreaInner: ViewGroup =
val notificationIconAreaInner: ViewGroup = miuiPhoneStatusBarView.findViewById( miuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
notificationIconAreaInnerId val systemIconArea: ViewGroup =
) miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView( (phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -153,39 +108,41 @@ object StatusBarLayoutForS : HookRegister() {
) )
(systemIconArea.parent as ViewGroup).removeView(systemIconArea) (systemIconArea.parent as ViewGroup).removeView(systemIconArea)
val mConstraintLayout = ConstraintLayout(context).also { val mConstraintLayout =
it.layoutParams = ConstraintLayout.LayoutParams( ConstraintLayout(context).also {
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT it.layoutParams = ConstraintLayout.LayoutParams(
) ConstraintLayout.LayoutParams.MATCH_PARENT,
} ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(notificationIconAreaInner) mConstraintLayout.addView(notificationIconAreaInner)
val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams( val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
) )
notificationIconAreaInner.layoutParams = fullscreenNotificationIconAreaLp notificationIconAreaInner.layoutParams = fullscreenNotificationIconAreaLp
//增加一个左对齐布局 //增加一个左对齐布局
mLeftLayout = LinearLayout(context) mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val leftLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mLeftLayout!!.layoutParams = leftLp mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局 //增加一个居中布局
mCenterLayout = LinearLayout(context) mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
) )
mCenterLayout!!.layoutParams = centerLp mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
mRightLayout = LinearLayout(context) mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val rightLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mRightLayout!!.layoutParams = rightLp mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phoneStatusBarLeftContainer) mLeftLayout!!.addView(phoneStatusBarLeftContainer)
@@ -203,7 +160,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0) val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) { if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin statusBarLeft = customLeftMargin
@@ -213,7 +170,7 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
@@ -222,7 +179,7 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter { }.hookAfter {
hasEnable("layout_compatibility_mode") { hasEnable("layout_compatibility_mode") {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }
} }
@@ -231,12 +188,14 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
//组件ID //组件ID
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui") val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui")
@@ -248,7 +207,8 @@ object StatusBarLayoutForS : HookRegister() {
//新建布局 //新建布局
val rightLp = LinearLayout.LayoutParams( val rightLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.marginStart = dp2px(context, 5f) it.marginStart = dp2px(context, 5f)
} }
@@ -260,36 +220,6 @@ object StatusBarLayoutForS : HookRegister() {
battery.addView(mRightLayout) battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock) mRightLayout!!.addView(clock)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
} }
} }
//时钟居中+图标居左 //时钟居中+图标居左
@@ -297,45 +227,65 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
val statusBarContentsId: Int = res.getIdentifier( res.getIdentifier("status_bar", "id", "com.android.systemui")
"status_bar_contents", "id", "com.android.systemui" val statusBarContentsId: Int =
) res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui") val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier( val phoneStatusBarLeftContainerId: Int =
"phone_status_bar_left_container", "id", "com.android.systemui" res.getIdentifier(
) "phone_status_bar_left_container",
val fullscreenNotificationIconAreaId: Int = res.getIdentifier( "id",
"fullscreen_notification_icon_area", "id", "com.android.systemui" "com.android.systemui"
) )
val statusIconsId: Int = res.getIdentifier( val fullscreenNotificationIconAreaId: Int =
"statusIcons", "id", "com.android.systemui" res.getIdentifier(
) "fullscreen_notification_icon_area",
val systemIconsId: Int = res.getIdentifier( "id",
"system_icons", "id", "com.android.systemui" "com.android.systemui"
) )
val batteryId: Int = res.getIdentifier( val statusIconsId: Int =
"battery", "id", "com.android.systemui" res.getIdentifier(
) "statusIcons",
"id",
"com.android.systemui"
)
val systemIconsId: Int =
res.getIdentifier(
"system_icons",
"id",
"com.android.systemui"
)
val batteryId: Int =
res.getIdentifier(
"battery",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId) val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId) val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById( val phoneStatusBarLeftContainer: ViewGroup =
phoneStatusBarLeftContainerId miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
) val fullscreenNotificationIconArea: ViewGroup =
val fullscreenNotificationIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById( miuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId)
fullscreenNotificationIconAreaId val systemIconArea: ViewGroup =
) miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId) val statusIcons: ViewGroup =
val statusIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(statusIconsId) miuiPhoneStatusBarView.findViewById(statusIconsId)
val systemIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconsId) val systemIcons: ViewGroup =
val battery: ViewGroup = miuiPhoneStatusBarView.findViewById(batteryId) miuiPhoneStatusBarView.findViewById(systemIconsId)
val battery: ViewGroup =
miuiPhoneStatusBarView.findViewById(batteryId)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView( (phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -349,25 +299,29 @@ object StatusBarLayoutForS : HookRegister() {
fullscreenNotificationIconArea fullscreenNotificationIconArea
) )
val mConstraintLayout = ConstraintLayout(context).also { val mConstraintLayout =
it.layoutParams = ConstraintLayout.LayoutParams( ConstraintLayout(context).also {
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT it.layoutParams = ConstraintLayout.LayoutParams(
) ConstraintLayout.LayoutParams.MATCH_PARENT,
} ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(fullscreenNotificationIconArea) mConstraintLayout.addView(fullscreenNotificationIconArea)
mConstraintLayout.addView(battery) mConstraintLayout.addView(battery)
battery.layoutParams = ConstraintLayout.LayoutParams( battery.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.MATCH_PARENT ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.endToEnd = 0 it.endToEnd = 0
} }
fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams( fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams(
0, ConstraintLayout.LayoutParams.MATCH_PARENT 0,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.startToEnd = batteryId it.startToEnd = batteryId
it.endToEnd = 0 it.endToEnd = 0
@@ -377,25 +331,24 @@ object StatusBarLayoutForS : HookRegister() {
//增加一个左对齐布局 //增加一个左对齐布局
mLeftLayout = LinearLayout(context) mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val leftLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mLeftLayout!!.layoutParams = leftLp mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局 //增加一个居中布局
mCenterLayout = LinearLayout(context) mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
) )
mCenterLayout!!.layoutParams = centerLp mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
//增加一个右布局 //增加一个右布局
mRightLayout = LinearLayout(context) mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val rightLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mRightLayout!!.layoutParams = rightLp mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
@@ -422,7 +375,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0) val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) { if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin statusBarLeft = customLeftMargin
@@ -432,16 +385,16 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
//兼容模式 //兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") { findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout" name == "updateLayoutForCutout"
}.hookAfter { }.hookAfter {
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }
@@ -451,10 +404,12 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter { }.hookAfter {
val miuiPhoneStatusBarView = it.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView = it.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val res = miuiPhoneStatusBarView.resources val res = miuiPhoneStatusBarView.resources
val statusBarId = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBar1 = miuiPhoneStatusBarView.findViewById<ViewGroup>(statusBarId) val statusBar1 = miuiPhoneStatusBarView.findViewById<ViewGroup>(statusBarId)
//非锁屏下整个状态栏布局 //非锁屏下整个状态栏布局
val keyguardMgr = statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager val keyguardMgr =
statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) { if (keyguardMgr.isKeyguardLocked) {
statusBar1!!.visibility = View.GONE statusBar1!!.visibility = View.GONE
} else { } else {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object StatusBarNetworkSpeedRefreshSpeedForS : HookRegister() { object StatusBarNetworkSpeedRefreshSpeed : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.systemui.statusbar.policy.NetworkSpeedController") { findMethod("com.android.systemui.statusbar.policy.NetworkSpeedController") {

View File

@@ -1,21 +1,22 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.res.Resources
import android.os.Handler import android.os.Handler
import android.provider.Settings import android.provider.Settings
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity import android.view.Gravity
import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.lang.reflect.Method import java.lang.reflect.Method
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
object StatusBarTimeCustomization : HookRegister() {
object StatusBarTimeCustomizationForS : HookRegister() {
private val getMode = XSPUtils.getInt("custom_clock_mode", 0) private val getMode = XSPUtils.getInt("custom_clock_mode", 0)
private val getClockSize = XSPUtils.getInt("status_bar_clock_size", 0) private val getClockSize = XSPUtils.getInt("status_bar_clock_size", 0)
@@ -29,12 +30,14 @@ object StatusBarTimeCustomizationForS : HookRegister() {
private val isSecond = XSPUtils.getBoolean("status_bar_time_seconds", false) private val isSecond = XSPUtils.getBoolean("status_bar_time_seconds", false)
private val isDoubleHour = XSPUtils.getBoolean("status_bar_time_double_hour", false) private val isDoubleHour = XSPUtils.getBoolean("status_bar_time_double_hour", false)
private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true) private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true)
private val isCenterAlign = XSPUtils.getBoolean("status_bar_time_double_line_center_align", false) private val isCenterAlign =
XSPUtils.getBoolean("status_bar_time_double_line_center_align", false)
//极客模式 //极客模式
private val getGeekClockSize = XSPUtils.getInt("status_bar_clock_size_geek", 0) private val getGeekClockSize = XSPUtils.getInt("status_bar_clock_size_geek", 0)
private val getGeekFormat = XSPUtils.getString("custom_clock_format_geek", "HH:mm:ss") private val getGeekFormat = XSPUtils.getString("custom_clock_format_geek", "HH:mm:ss")
private val isGeekCenterAlign = XSPUtils.getBoolean("status_bar_time_center_align_geek", false) private val isGeekCenterAlign =
XSPUtils.getBoolean("status_bar_time_center_align_geek", false)
private lateinit var nowTime: Date private lateinit var nowTime: Date
private var str = "" private var str = ""
@@ -80,7 +83,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
} }
Timer().scheduleAtFixedRate( Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000 T(),
1000 - System.currentTimeMillis() % 1000,
1000
) )
} catch (_: Exception) { } catch (_: Exception) {
} }
@@ -93,7 +98,8 @@ object StatusBarTimeCustomizationForS : HookRegister() {
val textV = it.thisObject as TextView val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") { if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString( val t = Settings.System.getString(
c!!.contentResolver, Settings.System.TIME_12_24 c!!.contentResolver,
Settings.System.TIME_12_24
) )
val is24 = t == "24" val is24 = t == "24"
nowTime = Calendar.getInstance().time nowTime = Calendar.getInstance().time
@@ -104,18 +110,15 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
if (isCenterAlign) { if (isCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
paramCount == 3 name == "onViewCreated" && parameterCount == 2
}.hookAfter { }.hookAfter {
try { val miuiPhoneStatusBarView =
val textV = it.thisObject as TextView it.thisObject.getObject("mStatusBar") as ViewGroup
if (textV.resources.getResourceEntryName(textV.id) == "clock") { val res: Resources = miuiPhoneStatusBarView.resources
c = it.args[0] as Context val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val textV = it.thisObject as TextView val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
textV.gravity = Gravity.CENTER clock.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
} }
} }
} }
@@ -149,7 +152,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
} }
Timer().scheduleAtFixedRate( Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000 T(),
1000 - System.currentTimeMillis() % 1000,
1000
) )
} catch (_: Exception) { } catch (_: Exception) {
} }
@@ -157,38 +162,27 @@ object StatusBarTimeCustomizationForS : HookRegister() {
findMethod("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.views.MiuiClock") {
name == "updateTime" name == "updateTime"
}.hookBefore { }.hookAfter {
try { try {
val textV = it.thisObject as TextView val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") { if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val mMiuiStatusBarClockController = textV.getObject("mMiuiStatusBarClockController") nowTime = Calendar.getInstance().time
val mCalendar = mMiuiStatusBarClockController.invokeMethodAuto("getCalendar") textV.text = SimpleDateFormat(getGeekFormat).format(nowTime)
mCalendar?.invokeMethodAuto(
"setTimeInMillis", System.currentTimeMillis()
)
val textSb = StringBuilder()
val formatSb = StringBuilder(getGeekFormat.toString())
mCalendar?.invokeMethodAuto("format", c, textSb, formatSb)
textV.text = textSb.toString()
it.result = null
} }
} catch (_: Exception) { } catch (_: Exception) {
} }
} }
if (isGeekCenterAlign) { if (isGeekCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
paramCount == 3 name == "onViewCreated" && parameterCount == 2
}.hookAfter { }.hookAfter {
try { val miuiPhoneStatusBarView =
val textV = it.thisObject as TextView it.thisObject.getObject("mStatusBar") as ViewGroup
if (textV.resources.getResourceEntryName(textV.id) == "clock") { val res: Resources = miuiPhoneStatusBarView.resources
c = it.args[0] as Context val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val textV = it.thisObject as TextView val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
textV.gravity = Gravity.CENTER clock.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
} }
} }
} }
@@ -203,6 +197,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isYear) { if (isYear) {
if (isZh) { if (isZh) {
datePattern += "YY年" datePattern += "YY年"
// if (!isHideSpace) datePattern = "$datePattern "
} else { } else {
datePattern += "YY" datePattern += "YY"
if (isMonth || isDay) datePattern += "/" if (isMonth || isDay) datePattern += "/"
@@ -211,6 +206,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isMonth) { if (isMonth) {
if (isZh) { if (isZh) {
datePattern += "M月" datePattern += "M月"
// if (!isHideSpace) datePattern = "$datePattern "
} else { } else {
datePattern += "M" datePattern += "M"
if (isDay) datePattern += "/" if (isDay) datePattern += "/"

View File

@@ -1,12 +1,12 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.putObject import com.github.kyuubiran.ezxhelper.utils.putObject
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object WaveChargeForT: HookRegister() { object WaveCharge: HookRegister() {
override fun init() { override fun init() {
hasEnable("enable_wave_charge_animation") { hasEnable("enable_wave_charge_animation") {

View File

@@ -1,11 +1,11 @@
package com.lt2333.simplicitytools.hooks.rules.all.thememanager package com.lt2333.simplicitytools.hook.app.thememanager
import com.github.kyuubiran.ezxhelper.utils.findMethod import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object RemoveAdsForAll : HookRegister() { object RemoveAds : HookRegister() {
override fun init() { override fun init() {
findMethod("com.android.thememanager.basemodule.ad.model.AdInfoResponse") { findMethod("com.android.thememanager.basemodule.ad.model.AdInfoResponse") {

View File

@@ -1,48 +0,0 @@
package com.lt2333.simplicitytools.hooks.apps
import android.os.Build
import com.lt2333.simplicitytools.hooks.rules.all.android.AllowUntrustedTouchesForAll
import com.lt2333.simplicitytools.hooks.rules.all.android.DeleteOnPostNotificationForAll
import com.lt2333.simplicitytools.hooks.rules.all.android.DisableFlagSecureForAll
import com.lt2333.simplicitytools.hooks.rules.all.corepatch.CorePatchMainHook
import com.lt2333.simplicitytools.hooks.rules.s.android.MaxWallpaperScaleForS
import com.lt2333.simplicitytools.hooks.rules.s.android.RemoveSmallWindowRestrictionsForS
import com.lt2333.simplicitytools.hooks.rules.s.android.SystemPropertiesHookForS
import com.lt2333.simplicitytools.hooks.rules.t.android.MaxWallpaperScaleForT
import com.lt2333.simplicitytools.hooks.rules.t.android.SystemPropertiesHookForT
import com.lt2333.simplicitytools.utils.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage
object Android : AppRegister() {
override val packageName: String = "android"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
//核心破解
CorePatchMainHook().handleLoadPackage(lpparam)
when (Build.VERSION.SDK_INT) {
Build.VERSION_CODES.TIRAMISU -> {
autoInitHooks(
lpparam,
DisableFlagSecureForAll, //允许截图
DeleteOnPostNotificationForAll, //上层显示
RemoveSmallWindowRestrictionsForS, //解除小窗限制
MaxWallpaperScaleForT, //壁纸缩放比例
SystemPropertiesHookForT, //SystemPropertiesHook
AllowUntrustedTouchesForAll, //允许不受信任的触摸
)
}
Build.VERSION_CODES.S -> {
autoInitHooks(
lpparam,
DisableFlagSecureForAll, //允许截图
DeleteOnPostNotificationForAll, //上层显示
RemoveSmallWindowRestrictionsForS, //解除小窗限制
MaxWallpaperScaleForS, //壁纸缩放比例
SystemPropertiesHookForS, //SystemPropertiesHook
AllowUntrustedTouchesForAll, //允许不受信任的触摸
)
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More