Android一个应用(APK)多个入口的实现方式整理

Android一个应用(APK)多个入口的实现方式整理

概要:

某些情况下,需要为apk设置多个执行入口,也就是安装后在应用程序列表中出现多个图标,各个图标APP不同模块的入口点,并且各个模块运行在不同的进程中。

Android一个应用多个入口有以下三种实现方式;

第一种:使用intent-filter

第二种:使用process属性

第三种:使用别名(activity-alias


1、方法一:直接在Activity节点中添加intent-filter

给相应的Activity增加如下代码:

    <intent-filter>

          <actionandroid:name="android.intent.action.MAIN"/>

          <categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

 

2、方法二:使用Activity的属性process,不同的Activity是运行在不同的进程中

Activity有一个重要的属性process,这个属性是指定Activity运行时所在的进程。没有指定此属性的话,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。在AndroidManifest.xml文件中所有组件元素的process属性能够为该组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。如果这个属性被分配的名字以:开头,当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。所以可以通过给每一个Activity指定标签、图标和进程名来区分不同的入口,具体实现如下:

<activity

     android:name=".MainActivity"

     android:label="@string/app_name"

android:process=”:process.main”>

     <intent-filter>

         <actionandroid:name="android.intent.action.MAIN"/>

         <categoryandroid:name="android.intent.category.LAUNCHER"/>

     </intent-filter>

</activity>

 

 

<activity

    android:name=".MainActivityB"

android:label="@string/app_nameB"

android:process=”:process.sub”

android:icon=”@drawable/icon1”

android:launchMode = “singleInstance”>

    <intent-filter>

       <actionandroid:name="android.intent.action.MAIN"/>

       <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

</activity>

需要注意的是,为Activity指定process属性后,还必须为其指定launchModesingleInstance,这样才有效。

3、方法三:使用activity-alias 

activity-aliasandroid里为了重复使用Activity而设计的。

当在ActivityonCreate()方法里,执行getIntent().getComponent().getClassName();得到的可能不是这个Activity的名字,有可能是别名的名字

创建两个图标:

 <activity

     android:name=".MainActivityB"

     android:exported="true" 

     android:label="@string/app_nameB">

     <intent-filter>

         <actionandroid:name="android.intent.action.MAIN"/>

         <categoryandroid:name="android.intent.category.LAUNCHER"/>

     </intent-filter>

 </activity>

       

 <activity-alias

    android:name="ActivityB_copy"

    android:icon="@drawable/icon1"   

    android:screenOrientation="landscape"

    android:targetActivity=".MainActivityB">

    <intent-filter>

        <actionandroid:name="android.intent.action.MAIN"/>

        <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

</activity-alias>

创建一个图标:

<activity

     android:name=".MainActivityB"

     android:exported="true" 

     android:label="@string/app_nameB">

</activity>

       

 <activity-alias

    android:name="ActivityB_copy"

    android:icon="@drawable/icon1"   

    android:screenOrientation="landscape"

    android:targetActivity=".MainActivityB">

    <intent-filter>

        <actionandroid:name="android.intent.action.MAIN"/>

        <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

</activity-alias>

 

其中android:exported="true"表示允许别的app调用该activity

 

这个应用会在桌面上建两个进入点,即建两个可以进入MainActivityB这个Activity的快捷图标。这时getIntent().getComponent().getClassName()得到的名字就不一样,一个是com.test.MainActivityB,一个是com.test.ActivityB_copy

 

总结:上面三种实现方式其实原理都是一样的,都是为第二个Activity添加

    <intent-filter>

        <actionandroid:name="android.intent.action.MAIN"/>

        <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

"intent-filter为程序增加入口图标。

  

问题

·        因为多个图标共用一个包名,所以只要卸载一个程序,与这个APK包名相同的程序也都会在桌面上消失;

·        从其它应用跳转到该APK时,需要通过ACTION区分跳转到具体哪一个模块(比如从资源管理器选择一个数据时,到底打开哪一个应用,需要通过action加以区分);

·        由于多个图标、splash、标题等需要区分的资源都放在一个APK中,这增加了APK的大小。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 如果你想要写一个 Android应用程序 (APK),你需要具备一定的编程基础,并掌握使用 Android 开发工具,例如 Android Studio。 1. 安装 Android Studio。 2. 新建一个 Android 项目。 3. 设计应用程序的用户界面 (UI)。 4. 编写代码来实现应用程序的功能。 5. 测试应用程序。 6. 打包应用程序为 APK 文件。 7. 将 APK 安装到手机或模拟器上进行测试。 8. 将 APK 发布到应用商店或直接分发给用户。 在开始写代码之前,建议先了解 Android 的基本概念,例如 Activity、Intent、Fragment 等。也建议学习一些基本的 Java 编程知识,因为 Android应用程序是使用 Java 编写的。 ### 回答2: 编写一个Android APK需要使用Java或Kotlin编程语言,并使用Android Studio作为开发工具。以下是一个简单的例子来演示如何编写一个Android APK: 首先,你需要创建一个新的Android项目并配置好所需的权限和依赖项。然后,在项目的MainActivity类中,你可以编写应用的主要功能。 在onCreate方法中,你可以设置应用的布局,创建必要的视图和按钮,并设置点击事件。例如,你可以创建一个按钮,并为其设置一个点击监听器。 在点击监听器中,你可以编写一些代码来执行特定的功能。例如,你可以在按钮点击时显示一个简单的Toast消息。 此外,你还可以编写其他功能,如网络请求、数据存储、调用其他应用程序等。这些功能可以在MainActivity类或其他辅助类中实现。 最后,你需要构建并打包应用。通过Android Studio的Build选项可以生成APK文件。你可以将该APK文件安装到Android设备或模拟器上进行测试。 总结起来,编写一个Android APK涉及创建Android项目、编写功能代码、设置布局和视图、使用事件监听器、打包APK等步骤。这只是一个简单的例子,实际上你可以根据自己的需求和时间进行更复杂的开发。 ### 回答3: 编写一个Android APKAndroid Application Package)需要一定的编程知识和技能。下面是一个简单的示例,展示如何编写一个最基本的Android APK: 1. 首先,在电脑上安装Java开发工具包(JDK),然后安装一个集成开发环境(IDE),例如Android Studio。 2. 打开Android Studio,选择创建一个新的项目。 3. 在项目设置中选择一个适合的应用程序名称和包名称。 4. 创建一个新的活动(Activity),该活动将作为应用程序的入口点。 5. 在活动的布局文件中设计应用程序的用户界面(如按钮、文本框等)。 6. 在活动的Java文件中编写代码,实现应用程序的逻辑。例如,当用户点击按钮时,执行一个特定的操作。 7. 使用安卓的Manifest文件配置应用程序的权限和其他应用程序相关的设置。 8. 调试应用程序,确保它在模拟器或真实设备上正常运行。 9. 构建APK文件,这是一个已经打包和编译的应用程序文件。 10. 将APK文件安装到Android设备上进行测试和使用。 以上只是一个简单的示例,一个真正的Android APK可能会有更多的功能和复杂性。编写一个Android APK需要深入了解Java编程语言、Android开发框架和与设备交互的各种API。因此,对于初学者来说,从简单的应用程序开始,并参考一些教程和指南是非常重要的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JerryHe

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值