shortx命令
1 subscriber
1 photo
1 file
5 links
Download Telegram
Forwarded from 𝓗𝓮
context.getSystemService("statusbar").disable(0);
//设置显示状态栏所有内容

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
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
Forwarded from 𝓗𝓮
// 只对与手机分辨率相同的显示设备生效,可避免导致全部显示设备同时关闭屏幕电源
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
Forwarded from 𝓗𝓮
android.nfc.INfcAdapter.Stub.asInterface(android.os.ServiceManager.getService("nfc")).getState() == 3;
// 判断NFC是否开启

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
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
Forwarded from 𝓗𝓮
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
Forwarded from 𝓗𝓮
com.android.internal.telephony.ITelephony.Stub.asInterface(android.os.ServiceManager.getService("phone")).getDataNetworkType("android", "");
// 获取当前SIM卡的网络类型

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
// 获取活动订阅信息
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
Forwarded from 𝓗𝓮
/*
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)
*/

#网络类型
Forwarded from 𝓗𝓮
com.android.internal.telephony.ITelephony.Stub.asInterface(android.os.ServiceManager.getService("phone")).getDataNetworkType("android", "") == 20;
// 判断当前SIM卡网络类型是否为5G

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").supportsSensorToggle(1, 2);     
// 设备是否支持摄像头硬件开关
/*
(1, 传感器类型1/2)
1 - 麦克风使用权限
2 - 摄像头使用权限
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").isToggleSensorPrivacyEnabled(1, 2);
// 获取摄像头传感器是否禁用
/*
(1, 传感器类型1/2)
1 - 麦克风使用权限
2 - 摄像头使用权限
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").showSensorUseDialog(2);
/*
在关闭对应传感器的前提,手动弹一次“解锁传感器开关”的确认对话框
1 - 麦克风使用权限
2 - 摄像头使用权限
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").isSensorPrivacyEnabled();       
// 全局传感器隐私是否开启,ShortX 已存在该条件

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").setSensorPrivacy(true);
// 设置禁用全局传感器 true=关闭传感器,false=开启所有
// ShortX已存在该动作

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
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
Forwarded from 𝓗𝓮
context.getSystemService("sensor_privacy").suppressSensorPrivacyReminders(1, true, 0)
// 设置指定用户麦克风隐私状态提示禁用弹窗
/*
(int sensor, boolean suppress, int userId)
sensor:1=麦克风、2=摄像头
suppress:true=屏蔽弹窗
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
𝓗𝓮
android.os.ServiceManager.getService("sensor_privacy").isToggleSensorPrivacyEnabled(1, 2); // 获取摄像头传感器是否禁用 /* (1, 传感器类型1/2) 1 - 麦克风使用权限 2 - 摄像头使用权限 */ #MVEL表达式 #Javascript
android.os.ServiceManager.getService("sensor_privacy").isCombinedToggleSensorPrivacyEnabled(2);
/*
第二种方法
获取摄像头权限开关是否关闭
1 - 麦克风使用权限
2 - 摄像头使用权限
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
/*
指定用户指定应用传感器管理
支持禁用、解除、查看,重置
*/
ServiceManager = android.os.ServiceManager;
ParcelFileDescriptor = android.os.ParcelFileDescriptor;

function runSensorCmd(args, userId) {

svc = ServiceManager.getService("sensorservice");

pin = ParcelFileDescriptor.createPipe();
pout = ParcelFileDescriptor.createPipe();
perr = ParcelFileDescriptor.createPipe();

pin[1].close();

// 如果有指定用户,添加 --user 参数
if (userId != undefined && userId != null) {
args.push("--user");
args.push(String(userId));
}

svc.shellCommand(
pin[0].getFileDescriptor(),
pout[1].getFileDescriptor(),
perr[1].getFileDescriptor(),
args,
null,
new android.os.ResultReceiver(null)
);

pout[1].close();
perr[1].close();

function read(p){
s = new android.os.ParcelFileDescriptor.AutoCloseInputStream(p[0]);
r = "";
b = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
n ="";
while((n = s.read(b)) > 0){
r += new java.lang.String(b, 0, n, "UTF-8");
}
return r;
}

result = read(pout) + read(perr);
result = result.trim();

if (args[0] == "get-uid-state") {
if (result.includes("idle")) return true;
if (result.includes("active")) return false;
return false;

}

return result;
}

// 1) 禁用(设置为 idle,相当于限制传感器)
// runSensorCmd(["set-uid-state", "包名", "idle"], 0);

// 2) 恢复 active(取消限制)
// runSensorCmd(["set-uid-state", "com.liuzh.deviceinfo", "active"], 0);

// 3) 查看状态
// true 已禁用 false 未禁用
runSensorCmd(["get-uid-state", "com.liuzh.deviceinfo"], 0);

// 4) 恢复默认(清除 override)
// runSensorCmd(["reset-uid-state", "包名"], 0);

// 该接口不会禁用摄像头和麦克风,下载类似设备信息APP测试效果
// Android 11-16已测试成功,其他版本未知

#Javascript
Forwarded from 𝓗𝓮
android.os.ServiceManager.getService("lock_settings").getPassword();
// 获取 Color 系统的锁屏密码,
/*
设置新密码后,需锁屏输入一次密码
Color16 不可用
*/

#MVEL表达式 #Javascript
Forwarded from 𝓗𝓮
Intent = android.content.Intent;
ComponentName = android.content.ComponentName;

bgStreamIntent = new Intent();
bgStreamIntent.setComponent(new ComponentName("com.oplus.exsystemservice", "com.oplus.backgroundstream.RouteForegroundService"));
bgStreamIntent.setAction("oplus.intent.action.BACKGROUND_STREAM_SERVICE");

context.startService(bgStreamIntent);
// Color系统的听剧模式 | 后台挂机
// Color16 不可用

#MVEL表达式 #Javascript