【Android开发那点破事】Android调试安装出现2个或2个以上图标

2023-11-16

前些日子给我们的APP添加了启动画面功能,这个在前面已经说过了: 【Android开发那点破事】打开APP加载页面实现

今天在用真机调试的时候,发现app安装到手机上出现了2个图标。

这里先将解决方法贴出来,后面再简单分析下为什么会出现2个图标。

解决方案:

在AndroidManifest.xml, CTRL+F中找到所有包含:

category android:name="android.intent.category.LAUNCHER"

把多余的删除,只保留你APP启动时的第一个activity中的。比如我这里只保留APP加载页面的配置:

<!-- startup page -->
<activity android:name="com.withiter.quhao.activity.LaunchActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		<!-- startup page -->

我们来分析下为什么会这样:

首先看下android官方的一些描述:

  • { action=android.app.action.MAIN } matches all of the activities that can be used as top-level entry points into an application.

  • { action=android.app.action.MAIN, category=android.app.category.LAUNCHER } is the actual intent used by the Launcher to populate its top-level list.

  • { action=android.intent.action.VIEW data=content://com.google.provider.NotePad/notes } displays a list of all the notes under "content://com.google.provider.NotePad/notes", which the user can browse through and see the details on.

  • { action=android.app.action.PICK data=content://com.google.provider.NotePad/notes } provides a list of the notes under "content://com.google.provider.NotePad/notes", from which the user can pick a note whose data URL is returned back to the caller.

  • { action=android.app.action.GET_CONTENT type=vnd.android.cursor.item/vnd.google.note } is similar to the pick action, but allows the caller to specify the kind of data they want back so that the system can find the appropriate activity to pick something of that data type.

  • { action=android.app.action.MAIN, category=android.app.category.LAUNCHER } is the actual intent used by the Launcher to populate its top-level list.这个翻译过来就是添加了{ action=android.app.action.MAIN, category=android.app.category.LAUNCHER } 的activity 是在程序启动的列表中的。所以如果定义多个LAUNCHER,就会出现多个APP图标。


  • 最后我们来总结下:
    一个应用程序可以有多个Activity,每个Activity是同级别的,那么在启动程序时,最先启动哪个Activity呢?有些程序可能需要显示在 程序列表里,有些不需要。怎么定义呢?android.intent.action.MAIN决定应用程序最先启动的Activity ,是程序的入口android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里。因为你的程序可能有很多个activity只要xml配置文件中有这么一个intent-filter,而且里面有这个launcher,那么这个activity就是点击程序时最先运行的那个activity。现在你只有一个activity,那么加不加就没有关系了。用于模拟器启动时设置为默认打开为的activity。


    好了今天这个破事就到这里,其实android开发就这么点破事。关于其他破事,见专栏:

    更多Android开发的破事,请看专栏:《Android开发那点破事》


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android开发那点破事】Android调试安装出现2个或2个以上图标 的相关文章

  • mybatisplus多条件并列复杂查询

    在使用mybatisPlus时 有时需要一些负责的sql条件拼接 这时 我们可以利用 QueryWrapper的and Consumer consumer 和 or Consumer consumer 来对条件进行拼接 查询条件拼接 例如
  • 配置AOP时报错:java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to

    报错 Exception in thread main java lang ClassCastException com sun proxy Proxy2 cannot be cast to 看报错信息 显示的是动态代理生成的类无法转换到我
  • navigator.geolocation.getCurrentPosition 获取位置偏移

    navigator geolocation getCurrentPosition function position 获取当前位置成功返回 经度 coords longitude 纬度 coords latitude 准确度 coords
  • 前端Vue模板页面(组件最全)

    https github com PanJiaChen vue element admin 这里是一个真诚的 青年技术交流QQ群 761374713 不管你是大学生 社畜 想学习变成的其他人员 欢迎大家加入我们 一起成长 一起进步 真诚的欢
  • Centos7 安装 Docker Compose

    目录 一 Docker Compose 简介 二 环境准备 三 安装 四 验证 五 问题解决 一 Docker Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具 通过 Compose 您可以使用 Y
  • 九、JDK1.8—并行流与串行流

    并行流 并行流就是把一个内容分成多个数据块 并用不同的线程分 别处理每个数据块的流 Java 8 中将并行进行了优化 我们可以很容易的对数据进行并 行操作 Stream API 可以声明性地通过 parallel 与 sequential
  • web自动化测试工具之Selenium的使用

    Selenium的使用 Selenium 概述 工作原理 应用场景 安装浏览器驱动 基本使用 安装Selenium模块 注意点 使用分析 代码实现 常见方法 driver对象 定位标签元素与获取标签对象 获取文本内容与属性值 使用无界面浏览
  • Oracle 【直接加载(sqlldr direct=true)】全方位解析与性能优化[2]

    3 比较direct方式使用并行和非并行选项的性能差异 数据文件 leo test data 100000记录 控制文件 leo test ctl 日志文件 leo test log 串行直接加载sqlload sqlldr userid
  • VC++ MapWinGis篇(一)

    添加高德图层 AMapProvider h pragma once include BaseProvider h class ABaseProvider public BaseProvider public ABaseProvider La
  • What time is it?【模拟】

    题目链接 POJ 1676 题意 给你两个时间点 前一个时间点比后一个时间点快了15分钟 当然 也有可能是隔天的 现在要问是否唯一确定第一个时间 输入坑点 两个时间之间用一个空格隔开 所以一行一共可以有25个字符 我们可以枚举00 00 2
  • ABAP doi 导出程序

    PERFORM FRM OUTPUT EXCEL 38 TABLES GT RESULT USING ZHRPA038 LDF PATH FORM FRM OUTPUT EXCEL 38 TABLES PT EXCEL TYPE STAND
  • css如何让两个div上下排列_深入了解CSS层叠上下层

    1 要想理解层叠上下层 首先要先从文档流和盒模型说起 文档流 在CSS中 文档流是一个很基础也是很重要的一个概念 很多时候她被称为Document Flow 但在CSS的标准被称为Normal Flow 即普通流或常规流 大家更喜欢称之为文
  • 基于MATLAB粒子群算法求解单目标优化问题

    基于MATLAB粒子群算法求解单目标优化问题 在实际应用中 优化问题是非常常见的一类问题 而对于单目标优化问题 粒子群算法是目前被广泛采用的一种优化算法 通过对分布在搜索空间中的粒子进行适应度评估和位置调整 粒子群算法可以在较短时间内找到全
  • uniapp开发微信小程序与H5的区别(Vue)

    1 微信小程序中父组件监听子组件的事件 子组件的 listeners拿不到事件 2 微信小程序中event stopPropagation 没用 只能用vue指令的 stop来阻止 3 vue开发网页的时候 一般对于不需要响应式的数据我们可
  • python flask框架下登录注册界面_Python-用户登录 Flask-Login

    用户登录功能是 Web 系统一个基本功能 是为用户提供更好服务的基础 在 Flask 框架中怎么做用户登录功能呢 今天学习一下 Flask 的用户登录组件 Flask Login Python 之所以如此强大和流行 除了本身易于学习和功能丰
  • Nginx基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 Nginx C语言编写 战斗民族俄罗斯人所创 是高性能的 HTTP
  • Java学习之笔试面试题总结

    1 浅复制 浅克隆 被复制对象的所有变量都含有与原来的对象相同的值 而所有的对其他对象的引用仍然指向原来的对象 换言之 浅复制仅仅复制所考虑的对象 而不复制它所引用的对象 深复制 深克隆 被复制对象的所有变量都含有与原来的对象相同的值 除去
  • ctfshow-web3

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 这个题目一看就知道是一个文件包含漏洞 php input可以访问请求的原始数据的只读流 将post请求的数据当作php代码执行 GET ht
  • 【Dexie.js 踩坑】Failed to execute ‘transaction‘ on ‘IDBDatabase‘

    查了很多资料 显示都是 indexedDB 的报错 说是异步操作无法保证下一次操作时上一步已经完成 试了很多按顺序执行的方法都无效 再后来试着解决控制台显示的警告提示我版本控制有问题 我就把版本升级了 问题迎刃而解 Dexie 官方文档是英

随机推荐

  • LayuiAdmin模板(0积分免费下载,非单独框架)

    点击这里直接下LayuiAdmin模板 请选择 普通下载
  • 4.通过Opencv采集摄像头视频数据

    VideoCapture 虚拟采集器 一般设备号从0开始 cap read 读取视频帧 返回值有两个 第一个为状态值 读到帧为true 第二个值为视频帧 cap release 释放资源 示例程序 import cv2 引入CV库 创建窗口
  • 深度干货:制造进销存国内现状如何?2023年五大制造进销存最新盘点!

    制造进销存是什么 制造进销存的发展如何 制造进销存的优势在哪里 制造进销存都能为企业提供什么 本文将带大家深入浅出的聊聊制造进销存 全面剖析制造进销存的前世今生 并且为大家提供2023年十大制造进销存系统大盘点 一 什么是制造进销存 制造进
  • W801

    目录 文档来源 芯片概述及MCU 特性可参考 安全特性 Wi Fi 特性 蓝牙特性 低功耗模式 芯片结构 与前述介绍的外设相对应 总线结构 说明 1 AHB 1 总线 主设备列表 编辑 从设备列表 2 AHB 2总线 时钟结构 CDK中对运
  • linux入门系列18--Web服务之Apache服务2

    接上一篇文章 在了解Apache基本配置以及SELinux相关知识后 继续演示Apache提供的虚拟主机功能以及访问控制方式 如果还没看上一篇的建议先查看后再来 上篇文章 linux入门系列18 web服务之apache服务1 三 Apac
  • openwrt调试用到的

    PC间文件共享 python3 m http server 在共享的电脑上 打开浏览器 直接输入 serverip 8000 NFS Ubuntu PC端 sudo apt get install nfs kernel server sud
  • shell的模拟实现

    目录 整体框架分析 代码演示 代码分析 整体框架分析 考虑下面这个与shell典型的互动 xzy ecs 333953 date16 ls makefile mycmd mycmd cpp myexec myexec c test py x
  • Python爬虫,私活接单记录,假日到手5500,美滋滋

    前言 每年的元旦节前后 都会是Python兼职接单的小高潮 这段时间各个行业对爬虫类的需求会暴增 圈子里很多朋友在元旦假期都没闲着 两天赚上万的不在少数 所以近来问我技术变现 兼职接单问题的朋友也特别多 我把问题总结下来 发现大部分人都有着
  • dataframe中如何筛选包含特定字符串(单个字符串、字符串列表)的列?

    里斯斯里 dataframe中如何筛选包含特定字符串 单个字符python基础教程 串 字符串列表 的列 问题描述 dataframe的某一列均为字符串格式 想筛选出含有特定字符串的行 具体实现代码如下 df df 地址 str conta
  • React循环

    import React Component from react class App extends Component constructor props super props this state str 这是react数据 num
  • golang之json注释处理

    场景 json 作为现代比较常用的文本格式 本身是不支持注释的 因为它的设计初衷是作为一种轻量级数据交换格式 只需要包含数据本身 而不应该包含注释或者其他无关的信息 但是有时json内字段较多 想写一些注释说明 这些都是编程工具或者编辑器特
  • Qt Assistant使用心得

    Qt Assistant也就是Qt助手 1 如何添加文档 编辑 gt 首选项 gt 文档 gt 添加后选择需要添加的 qch文件 qch是Qt帮助文档的格式 通常Qt的帮助文档在qt目录下ducuments文件夹里 比如我的在 opt V
  • 什么是误报?如何识别误报和漏报

    不管开发人员技能多么精通 误报和漏报总是会发生 很可能是他们的代码有某种无意的错误或漏洞 为了确保尽早发现这些编码错误和漏洞 开发人员通常使用代码静态分析工具 工具会根据开发人员设置的规则检查代码 然而 代码静态分析工具并不完美 工具有时也
  • C++总结:C++中的const和constexpr

    C 总结 C 中的const和constexpr 2014 02 18 15 31 by 付哲 10196 阅读 0 评论 收藏 编辑 C 中的const可用于修饰变量 函数 且在不同的地方有着不同的含义 现总结如下 const的语义 C
  • 编写测试用例方法之边界值分析法

    今天我们再来介绍另外一个编写测试用例的方法 边界值分析法 这个方法也是比较常用的写测试用例的方法 话不多说 开始整干货 首先 全图镇楼 之前我们也说过了 从测试点到测试用例 中间要有专业的方法 并对测试点进行扩充 然后才能详细地把测试点说清
  • 赞扬精心设计:基于属性的测试如何帮助我成为更好的开发人员

    开发人员的测试工具箱就是其中之一 很少保持不变 当然 某些测试实践已被证明比其他测试更有价值 但我们仍在不断寻找更好 更快和更具表现力的方法来测试我们的代码 基于属性的测试 对于Java社区几乎是未知的 这是Haskell员工精心制作的又一
  • 某验3空间推理验证码破解

    geetest极验空间推理验证码破解 gt 本篇文章仅供学习使用 如侵权请联系删除 某验验证码3代 4代已经是老生常谈的问题了 本篇文章粗略的分析一波3代空间推理验证码识别与验证的整个过程 yolov识别坐标 1 参数破解 从一开始gt和c
  • 【高级篇 / FortiGate-VM】(6.4) ❀ 02. 安装并启用 FortiGate VM ❀ FortiGate 防火墙

    怎么启用VMware FortiGate VM虚拟机 VMware FortiGate VM虚拟机第一次配置要怎么才能启用 首先 你需要下载到VMware FortiGate VM虚拟机文件 在D盘根目下新建一个子目录 例如FortiGat
  • 再探ROP(下)

    文章目录 0x01 概述 0x02 ret2reg 2 1 起因 2 2 原理 0x03 brop详解 3 1 概述 3 2 逆向思维切入 1 搭建环境 2 溢出长度和爆破canary 3 如何getshell 4 寻找直接条件 5 寻找间
  • 【Android开发那点破事】Android调试安装出现2个或2个以上图标

    前些日子给我们的APP添加了启动画面功能 这个在前面已经说过了 Android开发那点破事 打开APP加载页面实现 今天在用真机调试的时候 发现app安装到手机上出现了2个图标 这里先将解决方法贴出来 后面再简单分析下为什么会出现2个图标