如何在安卓中以编程方式打开MIUI系统活动

4

enter image description here

在安卓设备上,是否有可能通过编程的方式打开上述页面?
3个回答

6

MIUI 10。

对于当前应用程序:

try {
    Intent intent = new Intent();
    intent.setClassName("com.miui.powerkeeper",
    "com.miui.powerkeeper.ui.HiddenAppsConfigActivity");
    intent.putExtra("package_name", getPackageName());
    intent.putExtra("package_label", getText(R.string.app_name));
    startActivity(intent);
} catch (ActivityNotFoundException anfe) {
}

5
据我所知,没有隐式 Intent 可以打开这个 Activity
要显式地找出如何做到这一点,请查看在设备上打开此菜单时的 Logcat 输出以了解情况。流程应该由 ActivityManager 在某个时刻处理,因此您可以进行过滤。
您应该在日志中寻找以下内容:

I/ActivityManager: START u0 {cmp=com.miui.powerkeeper/.ui.PowerHideModeActivity} from uid 1000 on display 0

获取这些信息后,您只需创建一个适当的 Intent 即可启动相同的 Activity
try {
    Intent intent = new Intent();
    intent.setClassName("com.miui.powerkeeper",
        "com.miui.powerkeeper.ui.PowerHideModeActivity");

    startActivity(intent);
} catch (ActivityNotFoundException anfe) {
    // this is not an MIUI device, or the component got moved/renamed
}

顺便说一句,你不应该以这种显式的方式打开操作系统组件。每当他们更改此组件的类名或包名时,您的代码将会出错。


如果我想打开一款Oppo设备的活动,该怎么办? - Shaifali Rajput
@ShaifaliPundir 基本上和这里一样。在Oppo设备上打开“Activity”并检查Logcat输出。从日志中,您应该能够找出系统打开的组件是什么。然后为相同的组件创建一个显式的“Intent”(如上所示)。 - earthw0rmjim

1

您可以在小米手机(MIUI)上使用跳转到应用详情活动。

    Intent intent = new Intent(); 
    intent.setClassName("com.miui.securitycenter", "com.miui.appmanager.ApplicationsDetailsActivity");
    intent.putExtra("package_name", packageName);
    intent.putExtra("package_label", "Dev Tools");
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);

这是Dev Tools App使用的,https://play.google.com/store/apps/details?id=cn.trinea.android.developertools

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接