18

这是一个关于具有两个不同 .apk (或一个 .apk 文件中包含两个应用程序)的 android 应用程序的问题

我有两个应用程序,它们做完全不同但相关的事情,比如说一个是标准用户应用程序,一个是管理应用程序。但是用户既可以是用户也可以是管理员。我想知道我是否可以创建一个 .apk 文件来将两个应用程序安装到手机上?我该怎么办呢?

谢谢,马特

4

5 回答 5

13

您可以在同一个清单文件中有两个活动元素,它们同时具有action=MAINcategory=LAUNCHER的意图过滤器。此外,您还必须对两个活动元素使用属性“ android:taskAffinity ”(另请参见此处):

<application android:allowBackup="true"        
             android:icon="@drawable/main_icon"
             android:label="@string/main_name"
             android:theme="@style/AppTheme" >
             
    <activity android:name="com.foobar.MyActivity2"            
              android:taskAffinity="com.foobar.MyActivity2"
              android:icon="@drawable/icon1"
              android:label="@string/name1" >
        <intent-filter>
            <action   android:name="android.intent.action.MAIN"       />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>        
    
    <activity android:name="com.foobar.MyActivity2"
              android:taskAffinity="com.foobar.MyActivity2"
              android:icon="@drawable/icon1"
              android:label="@string/name2" >
        <intent-filter>
            <action   android:name="android.intent.action.MAIN"       />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>             
    
</application>

当带有此清单的 APK 文件安装在设备上时,它将在主屏幕上创建两个图标。这些图标的标题将取自属性android:label,图标将取自属性android:icon。在“设置|应用程序”下的应用程序列表中,您将看到由应用程序标签的属性定义的名称和图标。当您在应用程序列表中为此条目选择“卸载”时,两个“应用程序”都将从设备中删除。

于 2014-09-27T10:27:07.623 回答
7

这取决于您对“应用程序”的定义。如果您使用更官方的定义,则不能安装 2 个应用程序,因为您的应用程序中只能安装 1<application>manifest.xml

您可以在您的manifest.xml.APK

只需定义多个活动并使用这些活动可以定义为一个选项,但这取决于您对“应用程序”的定义,但在这种情况下,我会说它会起作用

于 2012-05-21T09:36:18.143 回答
2

是的,您只需安装一个应用程序即可安装多个应用程序。
在 Manifest.xml 中 在此处输入图像描述

项目结构:

在此处输入图像描述

于 2017-03-09T18:07:24.323 回答
1

您应该构建2 个使用APK 扩展文件的 APK 。

顺便说一句,这是一项安全措施。

于 2012-05-21T09:27:50.730 回答
0

不。

您可以做的是检查是否已经安装了第二个应用程序,如果答案是否定的,您可以使用帖子提示安装第二个应用程序的请求。

于 2012-05-21T09:26:49.857 回答