gpt4 book ai didi

Android 按组件名称调用 OEM Activity

转载 作者:行者123 更新时间:2023-11-29 18:16:41 25 4
gpt4 key购买 nike

在 Huwaie Ascend 上,当我们浏览设置菜单时:

Settings -> SD card & phone storage -> Software Upgrade -> SD card Upgrade

然后我们将被带到一个用户可以升级的屏幕。

然后使用 adb logcat 我们看到了这个:

 Starting activity: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.SystemUpgradeCheck }

我们可以使用 adb 通过调用来模拟:

adb shell am start -n com.android.settings/.SystemUpgradeCheck

这是成功的,我们看到了屏幕。

但是,当我们尝试从这样的 Activity 中调用它时:

    Intent i = new Intent(Intent.ACTION_MAIN);
i.setComponent(new ComponentName("com.android.settings", ".SystemUpgradeCheck"));
startActivity(i);

我们得到这个错误:

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.settings/.SystemUpgradeCheck}; have you declared this activity in your AndroidManifest.xml?

我们可以做些什么来克服这个问题?我说 Intent 错了吗?

最佳答案

想通了:)

Context foreignContext = createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> yourClass = foreignContext.getClassLoader().loadClass("com.android.settings.SystemUpgradeCheck");

Intent intent = new Intent(foreignContext, yourClass);
startActivity(intent);

关于Android 按组件名称调用 OEM Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com