从1个apk文件启动两个android应用程序

从1个apk文件启动两个android应用程序,android,Android,我需要创建一个android应用程序来启动一个新的应用程序。新的应用程序需要在与orig应用程序不同的进程上运行,需要有不同的包名,需要图形化(因此我认为这排除了服务,除非我弄错了,服务可能是图形化的),并且需要使用与第一个应用程序相同的apk文件安装。 它不会进入android市场,所以我不关心市场问题 今天,我看到一个应用程序完全满足我的需要,它在一个进程上以包名运行,并在“{orig.app.packgename}:remote”下打开了一个新进程 任何人都可以告诉我如何才能做到这一点?每

我需要创建一个android应用程序来启动一个新的应用程序。新的应用程序需要在与orig应用程序不同的进程上运行,需要有不同的包名,需要图形化(因此我认为这排除了服务,除非我弄错了,服务可能是图形化的),并且需要使用与第一个应用程序相同的apk文件安装。 它不会进入android市场,所以我不关心市场问题

今天,我看到一个应用程序完全满足我的需要,它在一个进程上以包名运行,并在“{orig.app.packgename}:remote”下打开了一个新进程


任何人都可以告诉我如何才能做到这一点?

每个应用程序都必须有自己的apk文件,并且每个应用程序只能有一个包名。解决方案是在资源文件中安装另一个应用程序apk并在运行时安装,或者如果已经安装了,就启动它。

我能想到的一个方法是意图(可能这就是你的意思)。许多应用程序注册了一些将从不同应用程序启动的活动。例如,当您单击“回复电子邮件”时,您可能已安装的电子邮件应用程序的“回复”活动将启动(例如Gmail)。请记住,“启动另一个应用程序的应用程序”会带来一些安全风险,因此必须满足此类操作的一些要求。

Ilya是对的,您需要单独安装它们,或者在资源中包含另一个apk,并在应用程序第一次运行时安装


然后,您可以简单地使用意图启动应用程序。

如上所述,单个APK只能容纳一个应用程序

您可以随时向用户建议安装其他应用程序,但我 明白这不是你想要的

所以,这里有一个小技巧,可以实现你的大部分目标 (接受不同的程序包名称,无法执行此操作)包装在 单个APK:

第一:将android:process标记添加到独立活动:

<activity android:name=".StandAloneActivity" 
     android:process=":MyNewProcess">
<activity  android:name=".MainActivity" >
    <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>


<activity
    android:name=".StandAloneActivity"
    android:process=":MyNewProcess" >
    <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
,或两者中的任何一个

你那颗小小的心还想要什么呢

这几乎正是我想要的。以我用来查找运行包的包名的黑客方式,我甚至得到了我想要的不同包名,即{my.package.name}:MyNewProcess。我这么说几乎是因为我删除了第二个意图过滤器,以防止第二个活动获得自己的启动器图标。