我想从我的应用程序启动另一个应用程序的特定活动。例如,在我的应用程序的
onCreate
上,我想启动名为 Rolling
(不是主要)活动 com.pas.webcam.pro
的活动。我听说您必须控制两个应用程序才能执行此操作,因为您必须将意图过滤器添加到第二个应用程序的清单中。但事实并非如此,因为 Google Play 商店中的活动启动器应用程序可以启动 IP Webcam Pro 的滚动活动。
Activity Launcher 应用程序是开源的,所以我尝试在此处查看源代码。但它太复杂了,所以我无法弄清楚这个应用程序如何神奇地启动这个活动。 Stack Overflow 上还有很多类似的问题,我已经阅读了每个问题。我也尝试了答案中的很多代码,如下所示:
Intent intent = new Intent(); intent.setComponent(new ComponentName("com.pas.webcam", "com.pas.webcam.RollingActivity")); startActivity(intent);
我还尝试了其他帖子中此代码的变体。我的应用程序总是崩溃,并且出现以下错误的变体(取决于我使用的代码):
出现错误无效的意图操作。无法找到显式活动类 {com.pas.webcam.pro/com.pas.webcam.pro.Rolling};您是否在 AndroidManifest.xml 中声明了此活动?
我已将以下两项放入我的 Android 清单中,并且发生了同样的事情:
<uses-permission android:name="android.permission.GET_INSTALLED_PACKAGES" />
<activity android:name="com.pas.webcam.pro.RollingActivity"
提前感谢您的任何答复,我真的很感激,因为我已经研究这个问题一段时间了。
编辑:这是我要启动的应用程序的活动:
https://i.sstatic.net/Fa7Xq.jpg编辑:David Wasser 为我提供了解决问题所需的代码,帮助我解决了问题。它确实有效!对于想要使用代码启动另一个应用程序的特定活动的任何人,请使用此:
Intent intent = new Intent(); intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling"); startActivity(intent);
您可以用您选择的应用程序和活动替换 com.pas.webcam.pro 和 Rolling,但这种方法确实有效。问题解决了!😀
Intent intent = new Intent();
intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling");
startActivity(intent);
由于您将该应用程序称为“IP webcam pro”,我假设包名称为“com.pas.webcam.pro”(通过互联网研究找到)。