`

Android项目为一个apk设置多个ICON图标和执行入口

 
阅读更多

Android开发中,一个工程对应一个AndroidManifest.xml文件,这个文件中包含有该项目的一些设置,如权限、SDk版Activity、Service信息等。一般而言,这个文件中会有且仅有一个application节点,这个节点表示这是一个应用程序,不管它下面还有多少子节点如Activity、Service等等。形象的说,就是这个项目生成的apk安装到Android设备后,应用程序列表中会出现一个ICON,这个ICON就是这个程序的执行入口了。

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

可能这种需求很少见,但还是有一个现实的例子:系统中的联系人和电话这两个程序。表面看来这是两个独立的应用程序,但实际上它们只是一个应用程序的两个执行入口而已,点击联系人图标就会进入联系人界面,点击电话图标就会进入拨号界面,这都是通过设置该项目下Activity的属性来实现的。

Activity有一个重要的属性process,这个属性是指定Activity运行时所在的进程。没有指定此属性的话,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。中所有组建元素的process属性能够为该组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。如果这个属性被分配的名字以:开头, 当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。

以下面的代码为例,项目中有两个Activity,其中一个采用默认属性,另一个为其指定process属性以及新的ICON,这样该项目安装到设备上之后可以发现多了两个应用程序图标,一个是应用程序默认的图标,点击后进入HelloWorldActivity;另一个是手动指定的ICON,点击后进入NextPageActivity。这时使用adb shell查看进程可以发现,两个Activity是运行在不同的进程中的。

AndroidManifest.xml的主要内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<activity android:name=".HelloWorldActivity"
          android:label="@string/app_name"
          android:process=":process.main">
         <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
</activity>
 
<activity android:name="cn.ian.NextPageActivity"
	  android:label="@string/nextpage"
	  android:process=":process.sub"
	  android:icon="@drawable/icon1"
	  android:launchMode ="singleInstance">
	 <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
</activity>

通过上面的方式,为App的各个组件指定process和icon属性,便能够达到类似于一个apk中打包多个程序(模块)的目的。

ps:要特别注意,为Activity指定process属性后,还必须为其指定launchMode为singleInstance,这样才有效。

分享到:
评论

相关推荐

    也谈Android下一个apk安装多个程序入口图标

    然而,标题“也谈Android下一个apk安装多个程序入口图标”提出了一个特殊的话题,即如何在一个APK中创建多个程序入口点,让同一个应用拥有不同的启动图标,提供用户不同的功能入口。这主要涉及AndroidManifest.xml...

    同一个APK多个icon进入同一个Activity的不同tab页

    本文将详细介绍如何实现“同一个APK多个icon进入同一个Activity的不同tab页”。 首先,我们需要理解Android中Activity的启动模式(launchMode)。Android提供了四种启动模式: 1. standard:默认模式,每次启动...

    android多个图标显示在桌面上

    然而,有时开发者可能希望为同一个应用创建多个入口点,以便提供不同的功能或者展示不同的界面,这就涉及到了如何让Android应用在桌面上显示多个图标。本教程将深入探讨这一主题。 首先,理解AndroidManifest.xml...

    Android中一个应用实现多个图标的几种方式

    在Android开发中,有时我们需要为同一个应用程序设置多个入口点,以显示不同的图标,提供不同的功能或界面风格。本文将详细探讨在Android中实现一个应用拥有多个图标的三种常见方法。 **1. 多Activity + intent-...

    Android平台Icon.docx

    在Android平台上,为应用程序设计和实现多个入口点通常涉及到创建多个图标(Icon)以及不同的启动方式,以便用户可以从应用程序列表中选择不同的功能模块。本文主要介绍三种常见的方法来实现基于Android平台的多Icon...

    android安卓app开发之 隐藏app的图标.zip控制图标显示和隐藏

    1. **隐藏启动Activity的图标**:通常,应用的主入口Activity会在AndroidManifest.xml中设置为LAUNCHER类别,这样它就会出现在启动器(即桌面)上。要隐藏它,只需移除或注释掉`android.intent.category.LAUNCHER`和...

    Android基本框架的搭建

    - 首先,在Android Studio中创建一个新的项目,并命名项目为`Atguigu_code`。 - 创建一个空的Activity,并命名为`LauncherActivity`。确保该Activity继承自`Activity`类。 2. **布局文件设置**: - 在`Launcher...

    在线编译IOS/Android app

    【描述】中的"该网站源码实现了网站的编译多个平台app"表明这是一个基于Web的解决方案,它通过网站的形式提供服务,允许用户上传自己的应用代码,并将其转换为针对不同平台的可执行文件。这通常涉及到跨平台开发框架...

    android 自定义组合控件 顶部导航栏

    本文将深入探讨如何在Android中创建一个自定义的顶部导航栏,这个控件可以作为应用的主要交互入口,展示多个可选的页面或功能。 首先,让我们了解顶部导航栏的基本构成。通常,它包含以下几个部分: 1. **标题**:...

    必看Android 500道高薪面试题集

    21. Android程序入口:Android应用程序入口为ActivityThread类的main()方法。 22. Android访问网络的方式:包括HttpURLConnection、HttpClient、Volley、Retrofit等。 23. XML解析的三种方式:DOM、SAX和Pull解析...

    基于android系统的音乐播放器设计与实现--含源程序--学位论文.doc

    综上所述,该学位论文详细探讨了如何在Android平台上设计和实现一个音乐播放器应用,涵盖了项目结构、Android组件使用、资源管理、服务实现以及UI设计等多个方面,具有较高的实践价值。通过阅读源代码,读者可以深入...

    android 关于(About)程序信息——Menu功能菜单程序设计

    1. **图标和文本**:每个菜单项都可以有对应的图标和文字,通过`android:icon`和`android:title`属性设置。 2. **分组**:菜单项可以分组,通过`group`元素实现,这样可以在视觉上区分不同的功能区域。 3. **检查...

    android 学习心得

    - **`android:finishOnTaskLaunch`**:如果设置为 `true`,则在启动一个新的Task时,此Activity将被销毁。 - **`android:icon`**:指定显示在Launcher或任务切换器中的图标资源ID。 - **`android:label`**:为...

    Android中Action Bar的使用

    在Android应用开发中,Action Bar是一个非常重要的组件,它位于应用程序界面的顶部,提供了一种标准的方式来展示应用程序的标识、主要的操作以及一个可选的下拉菜单,通常用于导航。本篇文章将深入探讨如何在Android...

    Android应用源码之CustomMenu.rar

    "Android应用源码之CustomMenu.rar"这个压缩包很可能是提供了一个示例项目,展示了如何在Android应用中创建和使用自定义菜单。这个项目可能包含了源代码、资源文件、布局文件以及相关的注释,帮助开发者理解和实践这...

    Notepad:这是一个有趣的项目,创建了一个记事本并弄乱了图标、字体和闪屏

    这个项目为初学者提供了一个很好的实践平台,让他们能够深入理解Android应用开发的基础知识和技巧。同时,对于有经验的开发者来说,这个项目也是一个有趣的挑战,他们可以在此基础上添加更多高级特性,如云同步、...

    ActionBar 示例程序

    ActionBar通常包含应用的图标、标题、菜单项和一个可选的“选项”或“更多”按钮,用户可以通过它来访问更多的功能。 在Android Studio中,我们可以通过在布局XML文件中添加`&lt;androidx.appcompat.widget.Toolbar&gt;`...

    android menu

    在Android开发中,菜单(Menu)是用户界面的重要组成部分,提供了用户与应用交互的额外功能入口。本讲将详细解析Android菜单的使用,包括选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。 一、...

    仿微博的底部菜单,这个demo用起来挺方便的

    菜单文件(如bottom_navigation_menu.xml)应包含多个`&lt;item&gt;`标签,每个标签对应一个菜单项,可以设置图标和文本: ```xml &lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt; android:id="@+...

    actionbar中增加setting菜单 自定义

    这里定义了一个id为`action_settings`的菜单项,图标和标题可以根据需要自定义,`showAsAction="always"`表示始终显示在`ActionBar`上,而不是隐藏在更多菜单中。 接下来,在`Activity`中重写`onCreateOptionsMenu`...

Global site tag (gtag.js) - Google Analytics