繁体   English   中英

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

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

我想从我的应用程序启动另一个应用程序的特定活动。 例如,在我的应用程序的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);

我还尝试了其他帖子中此代码的变体。 我的应用程序总是崩溃,并且我得到以下错误的变体(取决于我使用的代码):

发生错误

无效的意图操作。 无法找到显式活动 class {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.stack.imgur.com/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”,我假设 package 名称为“com.pas.webcam.pro”(通过互联网研究发现)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM