我需要创建一个启动新应用程序的Android应用程序.新的应用程序需要在orig应用程序的不同进程上运行,需要有一个不同的包名,它需要是图形的(所以我认为排除服务,除非我弄错了,服务可以是图形化的)它需要安装与第一个相同的apk文件.它不会进入Android市场,所以我不关心市场问题.
我今天看到了一个完全符合我需要的应用程序,它在它的包名下运行了一个进程,并在"{orig.app.packgename}:remote"下打开了一个新进程.
任何人都可以告诉我这样的事情怎么办?
Gil*_*mov 24
如上所述,单个APK只能容纳一个应用.
您可以随时建议您的用户安装另一个应用程序,但我知道这不是您想要的.
所以,这是一个小技巧,可以在一个APK中包含大部分你的目标(接受不同的包名,无法做到这一点):
第一步:为您的独立活动添加一个android:process标签:
<activity android:name=".StandAloneActivity"
android:process=":MyNewProcess">
Run Code Online (Sandbox Code Playgroud)
这将告知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>
Run Code Online (Sandbox Code Playgroud)
这将告知Android 需要为您的应用创建两个不同的主屏幕图标,每个MAIN活动一个(现在在不同的进程上运行).
不用说,标准方法调用不会从一个进程传递到另一个进程.您将需要使用Intents,AIDL接口或您的小心脏所需的任何其他IPC机制
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |