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

问题描述 投票:0回答:2

我想从我的应用程序启动另一个应用程序的特定活动。例如,在我的应用程序的

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,但这种方法确实有效。问题解决了!😀

java android-intent android-activity launch
2个回答
4
投票

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

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


1
投票
<intent-filter>

,否则您的应用将抛出

ActivityNotFoundException
。 比照。
https://developer.android.com/guide/components/intents-filters#match-intent-filter

© www.soinside.com 2019 - 2024. All rights reserved.