如何启动另一个应用程序的特定(显式)activity

How do I launch a specific (explicit) activity of another app

我想从我的应用程序启动另一个应用程序的特定 activity。例如,在我的应用程序 onCreate 上,我想启动 com.pas.webcam.pro 的名为 Rolling(不是主)activity 的 activity。我听说您必须控制两个应用程序才能执行此操作,因为您必须向第二个应用程序的清单添加一个意图过滤器。但这不是真的,因为 Google Play 商店中的 activity 启动器应用程序可以启动 IP Webcam Pro 的 Rolling Activity。

Activity Launcher app is open source, so I tried reviewing the source code here。不过它太复杂了,所以我无法弄清楚这个应用程序是如何神奇地启动这个 activity 的。 Stack Overflow 上还有很多其他类似的问题,我已经阅读了每一个。我也尝试了很多答案中的代码,像这样:

Intent intent = new Intent(); intent.setComponent(new ComponentName("com.pas.webcam", "com.pas.webcam.RollingActivity")); startActivity(intent);

我也试过其他帖子中这段代码的变体。我的应用程序总是崩溃,我得到 the following error:

的变体(取决于我使用的代码)

An error occurred

Invalid intent operation. Unable to find explicit activity class {com.pas.webcam.pro/com.pas.webcam.pro.Rolling}; have you declared this activity in your AndroidManifest.xml?

我已将以下两项放入我的 Android 清单中,同样的事情发生了:

<uses-permission android:name="android.permission.GET_INSTALLED_PACKAGES" />

<activity android:name="com.pas.webcam.pro.RollingActivity"

提前感谢您的任何回答,我真的很感激,因为我一直在研究这个问题。

编辑:这是我要启动的应用程序的 activity:https://i.stack.imgur.com/Fa7Xq.jpg

编辑:David Wasser 通过给我解决问题所需的代码帮助我解决了问题。它确实有效!对于任何想要使用代码启动另一个应用程序的特定 activity 的人,请使用此代码:

Intent intent = new Intent(); intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling"); startActivity(intent);

您可以将 com.pas.webcam.pro 和 Rolling 替换为您选择的应用程序和 activity,但此方法确实有效。问题已解决!

试试这个:

Intent intent = new Intent();
intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling");
startActivity(intent);

由于您将该应用称为“IP webcam pro”,我假设包名称是“com.pas.webcam.pro”(通过互联网搜索找到)。