Java 是否可以在Android上使用startActivity,使用活动名称或类似名称,在不同的apk中启动活动?

Java 是否可以在Android上使用startActivity,使用活动名称或类似名称,在不同的apk中启动活动?,java,android,android-activity,android-intent,Java,Android,Android Activity,Android Intent,我曾尝试编写一个Android应用程序,其中包含一个应该从其他应用程序启动的活动。它不是一个内容提供商,只是一个带有gui的应用程序,不应在已安装的应用程序中列出。我已经尝试过代码示例,似乎很容易启动现有的提供者等等,但我没有弄清楚如何编写一个“隐藏”应用程序并从另一个应用程序启动它 基本用例是: 应用程序A是可从应用程序列表启动的普通apk 应用程序B是一个不同的apk,具有已知的包和活动名称,但在应用程序列表中不可见或无法启动 应用程序A使用包和类名(或者可能是由这些名称构造的URI?)启

我曾尝试编写一个Android应用程序,其中包含一个应该从其他应用程序启动的活动。它不是一个内容提供商,只是一个带有gui的应用程序,不应在已安装的应用程序中列出。我已经尝试过代码示例,似乎很容易启动现有的提供者等等,但我没有弄清楚如何编写一个“隐藏”应用程序并从另一个应用程序启动它

基本用例是:

  • 应用程序A是可从应用程序列表启动的普通apk
  • 应用程序B是一个不同的apk,具有已知的包和活动名称,但在应用程序列表中不可见或无法启动
  • 应用程序A使用包和类名(或者可能是由这些名称构造的URI?)启动应用程序B
我在第三步失败了。可以这样做吗?

为什么要使用“包和类名”来启动第二个
.apk
中的活动

为什么不使用
意图
,因为这是启动
活动的标准方式

是的

使用包名和类名,如下所示(用于启动Gmail):


同样,如果我有一个通常启动活动的应用程序,我可以通过使用私钥签名将其构建到apk中。这是否允许从其他开发人员构建的其他APK访问该活动?

我认为这是可能的;如果您查看关于应用程序发布()的“签名策略”页面,第二个要点似乎是关于您所追求的。我自己没有做过,因此无法提供更多信息。是的,大量应用程序已经证明了这一点,例如CarDar从CarDar应用程序中启动雷达,或者您可以从自己的应用程序中启动条形码扫描仪。他说的是使用意图,而不是使用新的意图(上下文、类)构造函数。如果您这样做,你需要一个意图过滤器,是吗?是的,就是这样。我之前尝试过setClassName(String-packageName,String-className)方法,但是没有注意到类名需要有完整的路径,所以我认为我误解了它的用法。谢谢
new Intent("com.google.android.gm", "com.google.android.gm.ConversationListActivity");