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

时间:2014-07-02 16:20:39

标签: android

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

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

任何人都可以告诉我这样的事情怎么可以做到?

4 个答案:

答案 0 :(得分:24)

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

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

所以,这是一个小技巧,可以满足你的目标 (接受不同的包名,无法做到这一点)包裹在内 单个APK:

首先:在您的独立活动中添加一个android:process标记:

<activity android:name=".StandAloneActivity" 
     android:process=":MyNewProcess">

这将告知Android此活动应在单独的流程上执行 其名称为“MyNewProcess”。您可以添加标记为“:MyNewProcess”的其他组件(Activities,Services ..)。它们都将在同一个过程中执行。


然后:为您的独立活动创建一个“action.MAIN”意图过滤器 和你的应用程序的主要活动:

<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>

这将告知Android需要为您的应用创建两个不同的主屏幕图标,每个MAIN活动一个(现在在不同的进程上运行)。

毋庸置疑,标准方法调用不会从一个方法调用 过程到另一个。您需要使用IntentsAIDL interfaces或其中任何一个 你的小心愿的其他IPC机制

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

然后你可以简单地使用一个意图启动应用程序。