-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Xiaomi HyperOS cannot disable system packages #902
Comments
使用命令行, |
以下是终端输出: 应用没有被禁用 |
目前没有计划~有发邮件给小米,他们没有回复。 |
void canBeDisabled(String packageName, int newState) {
int callingUid = Binder.getCallingUid();
if (newState == COMPONENT_ENABLED_STATE_DEFAULT || newState == COMPONENT_ENABLED_STATE_ENABLED) {
return;
}
try {
if (Settings.Global.getInt(this.mContext.getContentResolver(), "maintenance_mode_user_id") == 110) {
return;
}
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
if (callingUid == 2000) {
if ("com.android.cts.priv.ctsshim".equals(packageName)) {
return;
}
PackageStateInternal ps = this.mPms.snapshotComputer().getPackageStateInternal(packageName);
if (ps != null && ps.isSystem() && newState == COMPONENT_ENABLED_STATE_DISABLED_USER) {
throw new SecurityException("Cannot disable system packages.");
}
}
if (ArrayUtils.contains(MIUI_CORE_APPS, packageName)) {
throw new SecurityException("Cannot disable miui core packages.");
}
if ("co.sitic.pp".equals(packageName) && shouldLockAppRegion()) {
throw new SecurityException("Cannot disable carrier core packages.");
}
} |
|
thx |
不过这是维修模式,一直保持不好,建议禁用后立刻还原 |
好的,谢谢了 |
请问如果长时间保持这个维修模式会有什么负面影响吗? |
不清楚,这是一个标识符,系统的一些行为会发生变化,但不知道具体哪些,所以最好删除。 |
这么说这个方法其实不安全,集成进黑阈会不会不太好? |
我会考虑一下,即使处理,也是黑阈自动设置,停用后自动退出。 即使用的话,也会是一个 实验性功能。 |
.line 643
const-string v1, "com.lbe.security.miui"
const-string v2, "com.miui.securitycenter"
const-string v3, "com.android.updater"
const-string v4, "com.xiaomi.market"
const-string v5, "com.xiaomi.finddevice"
const-string v6, "com.miui.home"
filled-new-array/range {v1 .. v6}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/android/server/pm/PackageManagerServiceImpl;->MIUI_CORE_APPS:[Ljava/lang/String; |
经过测试,进入维修模式之后 maintenance_mode_user_id 为 110,退出后为 -10000。 但是,手动设置 maintenance_mode_user_id 为 110,并不会触发维修模式,其它未知。 (可能需要反编译全部小米系统,才能知道全部使用场景。) 不过,黑阈会加入这个实验性功能,停用系统应用前设置该值,停用后删除该值。 |
手动设置 maintenance_mode_user_id 为 110确实并不会触发维修模式,但是目前发现这会导致系统设置中密码和指纹异常,但不影响正常使用,只是不能更改密码和指纹的相关设置,且会在手动恢复改标识符后恢复正常。 另,我这边测试退出维修模式该值会变为-10000,机型是Redmi K70 Pro。 |
嗯,我写错了,我这边也是 -10000 |
@Angelenx 请测试这个版本: https://dl.jianyv.com/br/alpha/
|
好的,已安装,目前没有发现问题。 |
目前该alpha版本未出现其他问题,建议将此功能加入实验性选项,加入beta版本,扩大测试范围。 |
谢谢大佬.虽然我是小白,但我知道手机设置里可以打开维修模式,然后就可以正常使用了 disable 了 |
手动进入维修模式,可以执行这个命令。执行后退出维修模式:
|
在最新的小米Hyperos2.0中,这个方法已经失效。 |
在小米最新的澎湃OS(Android 14)中,"停用功能"对于系统应用(如谷歌服务)已失效,而这同时也导致了“动态GMS”功能失效;而已知基于设备管理员的“应用隐藏”和“应用暂停”能够在此环境使用,因此我建议能够加入使用设备管理员权限或者Dhizuku进行对应用进行隐藏和暂停的功能。
The text was updated successfully, but these errors were encountered: