如上所述,一个APK只能容纳一个应用程序。
你总是可以建议你的用户安装另一个应用程序,但我明白这不是你想要的。
所以,这里有一个小窍门,将提供大部分的你的目标是什么 (接受不同的包名,没有办法做到这一点)内 包裹的单个APK:
首先:添加机器人:过程标签到您的独立活动:
<activity android:name=".StandAloneActivity"
android:process=":MyNewProcess">
这将通知Android的这一活动应在一个单独的进程 ,其名称是“MyNewProcess”执行。您可以添加标记为“:MyNewProcess”的其他组件(活动,服务..)。他们都将在同一个过程中执行。
然后:创建为您的独立活动 的“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版两个不同的主屏幕图标需求为您的应用程序创建,每个主要活动(现在运行在不同的进程上)。
不用说,标准方法调用不会从一个 过程到另一个穿过。您将需要使用Intents,AIDL interfaces或其他IPC机制您的小心脏欲望
这几乎正是我想要的。以我用来找到正在运行的软件包的软件包名称的黑客方式,我甚至得到了我想要的不同软件包名称,即{my.package.name}:MyNewProcess。 我说几乎是因为我删除了第二个意图过滤器,以防止第二个活动获取它自己的启动器图标。 –