android.os.ServiceManager.getService("sensor_privacy").setToggleSensorPrivacy(0, 0, 1, true);
// 设置指定用户麦克风传感器使用权限
/*
(userId, source, sensor, true);
* userId:一般为 0
* source:来源,填0即可
* sensor:1=麦克风、2=摄像头
* enable:true=启用隐私保护,关闭传感器
* false = 开启传感器
*/#MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").setSensorPrivacy(true);
// 设置禁用全局传感器 true=关闭传感器,false=开启所有
// ShortX已存在该动作 #MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").isSensorPrivacyEnabled();
// 全局传感器隐私是否开启,ShortX 已存在该条件#MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").showSensorUseDialog(2);
/*
在关闭对应传感器的前提,手动弹一次“解锁传感器开关”的确认对话框
1 - 麦克风使用权限
2 - 摄像头使用权限
*/#MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").isToggleSensorPrivacyEnabled(1, 2);
// 获取摄像头传感器是否禁用
/*
(1, 传感器类型1/2)
1 - 麦克风使用权限
2 - 摄像头使用权限
*/#MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").supportsSensorToggle(1, 2);
// 设备是否支持摄像头硬件开关
/*
(1, 传感器类型1/2)
1 - 麦克风使用权限
2 - 摄像头使用权限
*/#MVEL表达式 #Javascript
com.android.internal.telephony.ITelephony.Stub.asInterface(android.os.ServiceManager.getService("phone")).getDataNetworkType("android", "") == 20;
// 判断当前SIM卡网络类型是否为5G#MVEL表达式 #Javascript
/*
0 - 没插卡
1 - GPRS (2G)
2 - EDGE (2G)
3 - UMTS (3G)
4 - CDMA (3G)
5 - EVDO_0 (3G)
6 - EVDO_A (3G)
7 - EVDO_B (3G)
8 - HSDPA (3G)
9 - HSUPA (3G)
10 - HSPA (3G)
11 - IDEN (2G)
12 - LTE (4G)
13 - LTE_CA (4G+)
14 - HSPAP (3G)
15 - GSM (2G)
16 - TD_SCDMA (3G)
17 - IWLAN (Wi-Fi)
20 - NR (5G)
*/#网络类型
// 获取活动订阅信息
subscriptionManager = android.telephony.SubscriptionManager.from(context);
subscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
// 检查订阅信息是否为空
if (subscriptionInfoList == "[]") {
false;
} else {
// 获取卡一 的订阅ID
subId = subscriptionInfoList.get(0).getSubscriptionId();
// 获取网络类型
telephonyManager = com.android.internal.telephony.ITelephony.Stub.asInterface(android.os.ServiceManager.getService("phone"));
telephonyManager.getNetworkTypeForSubscriber(subId, "android", "");
}
//获取卡一的网络类型#MVEL表达式 #Javascript
com.android.internal.telephony.ITelephony.Stub.asInterface(android.os.ServiceManager.getService("phone")).getDataNetworkType("android", "");
// 获取当前SIM卡的网络类型#MVEL表达式 #Javascript
InputDevice = android.view.InputDevice;
inputManager = android.os.ServiceManager.getService("input");
deviceIds = inputManager.getInputDeviceIds();
touchDeviceId = -1;
for (i = 0; i < deviceIds.length; i++) {
id = deviceIds[i];
sources = inputManager.getInputDevice(id).getSources();
if ((sources & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN) {
touchDeviceId = id;
}
}
inputManager.enableInputDevice(touchDeviceId);
// 设置启用屏幕触摸#MVEL表达式 #Javascript
InputDevice = android.view.InputDevice;
inputManager = android.os.ServiceManager.getService("input");
deviceIds = inputManager.getInputDeviceIds();
touchDeviceId = -1;
for (i = 0; i < deviceIds.length; i++) {
id = deviceIds[i];
sources = inputManager.getInputDevice(id).getSources();
if ((sources & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN) {
touchDeviceId = id;
}
}
inputManager.disableInputDevice(touchDeviceId);
// 禁用触摸设备#MVEL表达式 #Javascript
android.nfc.INfcAdapter.Stub.asInterface(android.os.ServiceManager.getService("nfc")).getState() == 3;
// 判断NFC是否开启#MVEL表达式 #Javascript
// 只对与手机分辨率相同的显示设备生效,可避免导致全部显示设备同时关闭屏幕电源
Build = android.os.Build;
IBinder = android.os.IBinder;
Parcel = android.os.Parcel;
ServiceManager = android.os.ServiceManager;
SurfaceControl = android.view.SurfaceControl;
Context = android.content.Context;
DisplayMetrics = android.util.DisplayMetrics;
// 设置电源模式,0: 关闭,2: 开启
displayMode = 0;
// 获取 DisplayManager 服务
displayManager = context.getSystemService("display");
// 获取手机的分辨率
metrics = new DisplayMetrics();
context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getMetrics(metrics);
phoneWidth = metrics.widthPixels;
phoneHeight = metrics.heightPixels;
if (Build.VERSION.SDK_INT < 34) { // Android 14 之前的版本
// 获取 SurfaceControl 类(旧版本需要实例化)
surfaceControl = new SurfaceControl();
// 根据 Android 版本获取显示器 Token 方法
displayToken = (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) ?
surfaceControl.getBuiltInDisplay(0) : SurfaceControl.getInternalDisplayToken();
// 直接调用 SurfaceControl 的方法,设置电源模式
SurfaceControl.setDisplayPowerMode(displayToken, displayMode);
} else { // Android 14 及以上版本
// 获取 SurfaceFlinger 服务(AIDL 方式)
surfaceFlingerService = ServiceManager.getService("SurfaceFlingerAIDL");
// 获取显示器 ID 列表
parcelData = Parcel.obtain();
parcelReply = Parcel.obtain();
parcelData.writeInterfaceToken("android.gui.ISurfaceComposer");
surfaceFlingerService.transact(IBinder.FIRST_CALL_TRANSACTION + 5, parcelData, parcelReply, 0);
parcelReply.readException();
displayCount = parcelReply.readInt();
// 创建 long[] 数组存储显示器 ID
displayIds = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, displayCount);
// 读取显示器 ID 并获取每个显示器分辨率
for (var i = 0; i < displayCount; i++) {
displayIds[i] = parcelReply.readLong();
parcelData.recycle();
parcelReply.recycle();
// 获取每个显示器的分辨率
display = displayManager.getDisplay(i);
display.getMetrics(metrics);
displayWidth = metrics.widthPixels;
displayHeight = metrics.heightPixels;
// 只有当显示器分辨率与手机屏幕相同,才设置电源模式
if (displayWidth == phoneWidth && displayHeight == phoneHeight) {
// 获取显示器的 Token
parcelData = Parcel.obtain();
parcelReply = Parcel.obtain();
parcelData.writeInterfaceToken("android.gui.ISurfaceComposer");
parcelData.writeLong(displayIds[i]);
surfaceFlingerService.transact(IBinder.FIRST_CALL_TRANSACTION + 6, parcelData, parcelReply, 0);
parcelReply.readException();
displayToken = parcelReply.readStrongBinder();
parcelData.recycle();
parcelReply.recycle();
// 设置电源模式(0=强制息屏,2=开启电源模式)
SurfaceControl.setDisplayPowerMode(displayToken, displayMode);
} else {
// 如果分辨率不匹配,跳过该显示器,继续遍历下一个显示器
continue;
}
}
}
// 只对与手机分辨率相同的显示设备生效,可避免导致全部显示设备同时关闭屏幕电源#MVEL表达式 #Javascript
Build = android.os.Build;
IBinder = android.os.IBinder;
Parcel = android.os.Parcel;
ServiceManager = android.os.ServiceManager;
SurfaceControl = android.view.SurfaceControl;
displayMode = 0; // 直接设置电源模式 2: 开启, 0: 关闭
if (Build.VERSION.SDK_INT < 34) { // Android 14 之前的版本
// 获取 SurfaceControl 类(旧版本需要实例化)
surfaceControl = new SurfaceControl();
// 根据 Android 版本获取显示器 Token 方法
displayToken = (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) ?
surfaceControl.getBuiltInDisplay(0) : SurfaceControl.getInternalDisplayToken();
// 直接调用 SurfaceControl 的方法,设置电源模式
SurfaceControl.setDisplayPowerMode(displayToken, displayMode);
} else { // Android 14 及以上版本
// 获取 SurfaceFlinger 服务(AIDL 方式)
surfaceFlingerService = ServiceManager.getService("SurfaceFlingerAIDL");
// 获取显示器 ID 列表
parcelData = Parcel.obtain();
parcelReply = Parcel.obtain();
parcelData.writeInterfaceToken("android.gui.ISurfaceComposer");
surfaceFlingerService.transact(IBinder.FIRST_CALL_TRANSACTION + 5, parcelData, parcelReply, 0);
parcelReply.readException();
displayCount = parcelReply.readInt();
// 创建 long[] 数组存储显示器 ID
displayIds = java.lang.reflect.Array.newInstance(java.lang.Long.TYPE, displayCount);
// 读取显示器 ID
for (var i = 0; i < displayCount; i++) {
displayIds[i] = parcelReply.readLong();
}
parcelData.recycle();
parcelReply.recycle();
// 遍历每个显示器,设置电源模式
for (var i = 0; i < displayIds.length; i++) {
displayId = displayIds[i];
// 获取单个显示器的 Token
parcelData = Parcel.obtain();
parcelReply = Parcel.obtain();
parcelData.writeInterfaceToken("android.gui.ISurfaceComposer");
parcelData.writeLong(displayId);
surfaceFlingerService.transact(IBinder.FIRST_CALL_TRANSACTION + 6, parcelData, parcelReply, 0);
parcelReply.readException();
displayToken = parcelReply.readStrongBinder();
parcelData.recycle();
parcelReply.recycle();
// 直接调用 SurfaceControl 的方法,设置电源模式(0=强制息屏,2=开启电源模式)
SurfaceControl.setDisplayPowerMode(displayToken, displayMode);
}
}
// Extinguish 息屏挂机 息屏运行 听剧模式 仅关屏 息屏不锁屏 息屏不锁屏 游戏挂机 开屏伪装FakeSceen#MVEL表达式 #Javascript
statusbar = context.getSystemService("statusbar");
// 设置禁用标志(禁用通知图标、系统信息、时钟)
statusbar.disable(statusbar.DISABLE_NOTIFICATION_ICONS | statusbar.DISABLE_SYSTEM_INFO | statusbar.DISABLE_CLOCK);
// 设置隐藏状态栏基本内容显示
/*
禁用后台多任务界面
DISABLE_RECENT
禁用导航栏
DISABLE_NAVIGATION
全家桶(禁用所有能禁用的组件)(慎用)
DISABLE_MASK
禁用下拉状态栏(个别系统恢复下拉状态栏,执行恢复命令后需锁屏一次)
DISABLE_EXPAND
详情查看https://blog.csdn.net/qq_45146250/article/details/131088228
*/#MVEL表达式 #Javascript
android.os.ServiceManager.getService("wifi").getConnectionInfo("android", null);
// 获取当前WiFi 全部信息
// 我就不一个一个弄了,有些我自己也不需要#MVEL表达式 #Javascript
ip = android.os.ServiceManager.getService("wifi").getConnectionInfo("android", null).getIpAddress();
(ip & 0xff) + "." + ((ip >> 8) & 0xff) + "." +
((ip >> 16) & 0xff) + "." + ((ip >> 24) & 0xff);
// 获取当前WiFi IP#MVEL表达式 #Javascript