适配更多状态栏图标隐藏

This commit is contained in:
LittleTurtle2333
2022-02-14 17:27:41 +08:00
parent 83c158c385
commit 491e3ed138
11 changed files with 393 additions and 125 deletions

View File

@@ -14,7 +14,6 @@
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" />
</intent-filter>
</activity>

View File

@@ -1,14 +1,14 @@
package com.lt2333.simplicitytools;
import android.telephony.SubscriptionInfo;
import android.content.Intent;
import android.util.Log;
import java.util.List;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
@@ -18,121 +18,282 @@ public class MainHook implements IXposedHookLoadPackage {
String TAG = "MainHook";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
//电量与性能
if (lpparam.packageName.equals("com.miui.powerkeeper")) {
//锁定最高刷新率
XposedHelpers.findAndHookMethod(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader,
"setScreenEffect",
String.class, int.class, int.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
try {
XposedHelpers.findAndHookMethod(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting", lpparam.classLoader,
"setScreenEffect",
String.class, int.class, int.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("lock_max_fps", false)) {
param.setResult(null);
}
}
if (prefs.getBoolean("lock_max_fps", false)) {
param.setResult(null);
}
}
});
});
} catch (Exception e) {
XposedBridge.log(e);
}
}
//系统界面
if (lpparam.packageName.equals("com.android.systemui")) {
//隐藏无SIM卡图标
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
"setNoSims", boolean.class, boolean.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
"setNoSims", boolean.class, boolean.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_no_sim_icon", false)) {
param.setResult(null);
}
}
if (prefs.getBoolean("hide_no_sim_icon", false)) {
param.setResult(null);
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏VPN图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"updateVpn",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_vpn_icon", false)) {
param.setResult(null);
}
}
}
});
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏飞行模式图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"setIsAirplaneMode", XposedHelpers.findClass("com.android.systemui.statusbar.policy.NetworkController$IconState", lpparam.classLoader),
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_airplane_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏WIFI图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy", lpparam.classLoader,
"updateWifiIconWithState", XposedHelpers.findClass("com.android.systemui.statusbar.phone.StatusBarSignalPolicy$WifiIconState", lpparam.classLoader),
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_wifi_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"hasCorrectSubs", List.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
//隐藏蓝牙图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
"updateBluetooth", String.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_bluetooth_icon", false)) {
param.setResult(null);
}
}
List list = ((List<?>) param.args[0]);
int size = list.size();
Log.d(TAG, "beforeHookedMethod: "+size);
if (size == 2 && prefs.getBoolean("hide_sim_two_icon", false) == true) {
list.remove(1);
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏 声音、勿扰 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
"updateVolumeZen",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_volume_zen_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏 闹钟 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
"onMiuiAlarmChanged",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_alarm_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏 耳机 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
"updateHeadsetPlug", Intent.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_headset_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏 蓝牙电量 图标
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", lpparam.classLoader,
"updateBluetoothHandsfreeBattery", Intent.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("hide_bluetooth_battery_icon", false)) {
param.setResult(null);
}
}
});
} catch (Exception e) {
XposedBridge.log(e);
}
//隐藏卡一卡二
try {
XposedHelpers.findAndHookMethod(
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy", lpparam.classLoader,
"hasCorrectSubs", List.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
List list = ((List<?>) param.args[0]);
int size = list.size();
Log.d(TAG, "beforeHookedMethod: " + size);
if (size == 2 && prefs.getBoolean("hide_sim_two_icon", false)) {
list.remove(1);
}
if (size >= 1 && prefs.getBoolean("hide_sim_one_icon", false) == true) {
list.remove(0);
if (size >= 1 && prefs.getBoolean("hide_sim_one_icon", false)) {
list.remove(0);
}
}
}
});
});
} catch (Exception e) {
XposedBridge.log(e);
}
}
//MIUI桌面
if (lpparam.packageName.equals("com.miui.home")) {
//始终显示时钟
XposedHelpers.findAndHookMethod(
"com.miui.home.launcher.Workspace", lpparam.classLoader,
"isScreenHasClockGadget", long.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
try {
XposedHelpers.findAndHookMethod(
"com.miui.home.launcher.Workspace", lpparam.classLoader,
"isScreenHasClockGadget", long.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("home_time", false)) {
param.setResult(false);
}
}
if (prefs.getBoolean("home_time", false)) {
param.setResult(false);
}
}
});
});
} catch (Exception e) {
XposedBridge.log(e);
}
}
//Andorid 框架
if (lpparam.packageName.equals("android")) {
//允许截图
XposedHelpers.findAndHookMethod("com.android.server.wm.WindowState", lpparam.classLoader,
"isSecureLocked",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (prefs.hasFileChanged()) {
prefs.reload();
try {
XposedHelpers.findAndHookMethod("com.android.server.wm.WindowState", lpparam.classLoader,
"isSecureLocked",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("disable_flag_secure", false)) {
param.setResult(false);
}
}
if (prefs.getBoolean("disable_flag_secure", false)) {
param.setResult(false);
}
}
});
//去除上层显示
XposedHelpers.findAndHookMethod(
"com.android.server.wm.AlertWindowNotification", lpparam.classLoader,
"onPostNotification",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (prefs.hasFileChanged()) {
prefs.reload();
}
if (prefs.getBoolean("delete_on_post_notification", false)) {
param.setResult(false);
}
}
});
});
} catch (Exception e) {
XposedBridge.log(e);
}
}
}
}

View File

@@ -2,15 +2,19 @@ package com.lt2333.simplicitytools;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
public class SettingsActivity extends AppCompatActivity {
@@ -60,7 +64,7 @@ public class SettingsActivity extends AppCompatActivity {
getSharedPreferences("config", Context.MODE_WORLD_READABLE);
} catch (SecurityException exception) {
new AlertDialog.Builder(this)
.setMessage("不支持")
.setMessage("您似乎正在使用过时的 LSPosed 版本或 LSPosed 未激活,请更新 LSPosed 或者激活后再试。")
.show();
}
}
@@ -71,8 +75,39 @@ public class SettingsActivity extends AppCompatActivity {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("config");
setPreferencesFromResource(R.xml.root_preferences, rootKey);
findPreference("verison").setSummary(BuildConfig.VERSION_NAME+"("+BuildConfig.BUILD_TYPE+")");
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
if (preference.getKey().equals("opensource")){
try {
Uri uri = Uri.parse("https://github.com/LittleTurtle2333/Simplicity_Tools_Xposed");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(getActivity(), "访问失败", Toast.LENGTH_SHORT).show();
}
}
if (preference.getKey().equals("dev_coolapk")) {
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("coolmarket://u/883441")));
Toast.makeText(getActivity(), "乌堆小透明:靓仔,点个关注吧!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getActivity(), "本机未安装酷安应用", Toast.LENGTH_SHORT).show();
Uri uri = Uri.parse("http://www.coolapk.com/u/883441");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
return super.onPreferenceTreeClick(preference);
}
}
}

View File

@@ -1,3 +0,0 @@
<resources>
<dimen name="fab_margin">48dp</dimen>
</resources>

View File

@@ -1,3 +0,0 @@
<resources>
<dimen name="fab_margin">200dp</dimen>
</resources>

View File

@@ -1,3 +0,0 @@
<resources>
<dimen name="fab_margin">48dp</dimen>
</resources>

View File

@@ -1,3 +0,0 @@
<resources>
<dimen name="fab_margin">16dp</dimen>
</resources>

View File

@@ -10,13 +10,33 @@
<string name="other">其他</string>
<string name="disable_flag_secure">允许截图</string>
<string name="disable_flag_secure_summary">开启后允许在不允许截图的软件中截图</string>
<string name="core_patch">核心破解</string>
<string name="core_patch_summary">降级安装、不同签名安装、无视签名</string>
<string name="hide_no_sim_icon">隐藏无SIM卡图标</string>
<string name="status_bar_icon">状态栏图标</string>
<string name="home">桌面</string>
<string name="home_time">始终显示桌面时钟</string>
<string name="hide_sim_one_icon">隐藏SIM卡一图标</string>
<string name="hide_sim_two_icon">隐藏SIM卡二图标</string>
<string name="reboot_ui">重启UI</string>
<!--状态栏图标-->
<string name="status_bar_icon">状态栏图标</string>
<string name="hide_no_sim_icon">隐藏 无SIM卡 图标</string>
<string name="hide_sim_one_icon">隐藏 SIM卡一 图标</string>
<string name="hide_sim_two_icon">隐藏 SIM卡二 图标</string>
<string name="hide_vpn_icon">隐藏 VPN 图标</string>
<string name="hide_airplane_icon">隐藏 飞行模式 图标</string>
<string name="hide_wifi_icon">隐藏 WIFI 图标</string>
<string name="hide_bluetooth_icon">隐藏 蓝牙 图标</string>
<string name="hide_volume_zen_icon">隐藏 声音、勿扰 图标</string>
<string name="hide_alarm_icon">隐藏 闹钟 图标</string>
<string name="hide_hotspot_icon">隐藏 WIFI热点 图标</string>
<string name="hide_headset_icon">隐藏 耳机 图标</string>
<string name="hide_bluetooth_battery_icon">隐藏 蓝牙电量 图标</string>
<string name="about">关于</string>
<string name="verison">版本</string>
<string name="dev_coolapk">开发者酷安</string>
<string name="dev_coolapk_name">\@乌堆小透明</string>
<string name="opensource">开源仓库</string>
<string name="github_url">点击查看开源仓库(GitHub)</string>
</resources>

View File

@@ -1,9 +1,10 @@
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:iconSpaceReserved="false"
app:title="@string/ui">
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="delete_on_post_notification"
app:title="@string/delete_on_post_notification" />
@@ -14,16 +15,58 @@
app:iconSpaceReserved="false"
app:title="@string/status_bar_icon">
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_bluetooth_icon"
app:title="@string/hide_bluetooth_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_bluetooth_battery_icon"
app:title="@string/hide_bluetooth_battery_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_wifi_icon"
app:title="@string/hide_wifi_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_hotspot_icon"
app:title="@string/hide_hotspot_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_airplane_icon"
app:title="@string/hide_airplane_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_volume_zen_icon"
app:title="@string/hide_volume_zen_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_alarm_icon"
app:title="@string/hide_alarm_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_headset_icon"
app:title="@string/hide_headset_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_vpn_icon"
app:title="@string/hide_vpn_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_sim_one_icon"
app:title="@string/hide_sim_one_icon"/>
<SwitchPreferenceCompat
app:title="@string/hide_sim_one_icon" />
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_sim_two_icon"
app:title="@string/hide_sim_two_icon"/>
app:title="@string/hide_sim_two_icon" />
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="hide_no_sim_icon"
app:title="@string/hide_no_sim_icon" />
@@ -33,7 +76,7 @@
app:iconSpaceReserved="false"
app:title="@string/home">
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="home_time"
app:title="@string/home_time" />
@@ -42,7 +85,7 @@
<PreferenceCategory
app:iconSpaceReserved="false"
app:title="@string/performance">
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="lock_max_fps"
app:title="@string/lock_max_fps" />
@@ -51,14 +94,36 @@
<PreferenceCategory
app:iconSpaceReserved="false"
app:title="@string/other">
<SwitchPreferenceCompat
<SwitchPreference
app:iconSpaceReserved="false"
app:key="disable_flag_secure"
app:title="@string/disable_flag_secure" />
<SwitchPreferenceCompat
</PreferenceCategory>
<PreferenceCategory
app:iconSpaceReserved="false"
app:title="@string/about">
<PreferenceScreen
app:key="opensource"
app:iconSpaceReserved="false"
app:key="core_patch"
app:title="@string/core_patch" />
app:summary="@string/github_url"
app:title="@string/opensource">
</PreferenceScreen>
<PreferenceScreen
app:key="dev_coolapk"
app:iconSpaceReserved="false"
app:summary="@string/dev_coolapk_name"
app:title="@string/dev_coolapk">
</PreferenceScreen>
<PreferenceScreen
app:key="verison"
app:iconSpaceReserved="false"
app:title="@string/verison">
</PreferenceScreen>
</PreferenceCategory>