android之android.intent.category.DEFAULT的用途和使用

1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码:Intent intent= new Intent(this, B.class);Implicit Intent没有明确的指定要启动哪个Activity …

大家好,又见面了,我是全栈君。

1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。

     Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码:

Intent intent= new Intent(this, B.class);

 Implicit Intent没有明确的指定要启动哪个Activity ,而是通过设置一些Intent Filter来让系统去筛选合适的Acitivity去启动。

2、intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data。

理论上来说,如果intent不指定category,那么无论intent filter的内容是什么都应该是匹配的。但是,如果是implicit intent,android默认给加上一个CATEGORY_DEFAULT,这样的话如果intent filter中没有android.intent.category.DEFAULT这个category的话,匹配测试就会失败。所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中加入android.intent.category.DEFAULT。

例外情况是:

<intent-filter>
		<action android:name="android.intent.action.MAIN" />
		<category android:name="android.intent.category.LAUNCHER" />
	</intent-filter>

中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题。这个是应用启动默认的第一个启动的activity(每个应用有那么多activity,总得有一个是第一个启动的吧)

 

如果自己定义的某个Activity要通过隐式启动,在AndroidManifast.xm那么必须加上android.intent.category.DEFAULT,否则不起作用

除此之外,category的用途还有很多

比如做个桌面,按home键时启动自己做的应用

<activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER"/>
                <category android:name="android.intent.category.HOME" />
            </intent-filter>
        </activity>

在intent中是如何配置那三个匹配数据的呢,也简单一说

也就是说,在不直接指定要跳转的Activity的时候,为Intent提供一些相关的参数,让其自动去和AndroidManifest.xml中已有的Activity去匹配

IntentFilter在xml中的三個主要的参数:action,categary,data。

我们通过Intent的构造函数或者Intent提供的方法可以指定这个三个参数:    

 

intent.setAction(action);intent.setData(data);intent.addCategory(category);
intent.setAction(action);
intent.setData(data);
intent.addCategory(category);

 

 

 

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

android之android.intent.category.DEFAULT的用途和使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121418.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 模电学习第一天–PN结梳理

    模电学习第一天–PN结梳理基本概念本征半导体:纯净的、具有晶体结构的半导体两种载流子:自由电子、空穴(两种载流子均参与导电)本征激发:半导体在热激发下产生自由电子和空穴对的现象复合:电子填补空穴动态平衡:一定温度下,本征激发与复合产生的自由电子和空穴相等温度影响:热运动加剧–挣脱共价键束缚自由电子增多–空穴增多–载流子浓度提高–导电能力增强N型半导体:自由电子浓度大于空穴浓度,前者为多子,后者为少子P型半导体:空穴浓度大于自由电子浓度对于杂质半导体的温度影响:可以认为多子浓度约等于所掺杂质原子的浓度,且受温度影响很

    2022年6月20日
    32
  • 软件测试缺陷报告内容_软件测试缺陷分析

    软件测试缺陷报告内容_软件测试缺陷分析1软件缺陷缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等 并不是所有的测试人员都能提交被开发认可的缺陷,也不是测试人员在任何时候都能提交被开发认可的缺陷2什么是软件缺陷软件未达到产品说明书标准的功能 软件出现了产品说明书指明不会出现的错误 软件功能超出产品说明书指明范围 软件未达到产品说明书虽未指出但应达到的目标 软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为不好3缺陷产生的原因4发现缺陷用户体验不够好 界面上有明显的错误信

    2022年9月17日
    0
  • js怎么让指定方法先后顺序_jquery固定table表头

    js怎么让指定方法先后顺序_jquery固定table表头当时遇见这个问题是医院手麻系统大批量数据展示,由于是旧项目系统没有使用到前端的架构只能使用JQ,JS,css完成也谢谢给予我支持的同行们固定首行数据:采用函数的方式进行JQ/***

    2022年8月2日
    6
  • Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP

    Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP关于Android的Intent.FLAG_ACTIVITY_CLEAR_TOP如果设置,并且这个Activity已经在当前的Task中运行,因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。例如,假设一个Task中包含这些Act…

    2022年7月17日
    14
  • pycharm安装pyqt5-tools_怎么配置pycharm的环境

    pycharm安装pyqt5-tools_怎么配置pycharm的环境快速配置pyqt5,在pycharm上进行配置。步骤详细

    2022年8月28日
    0
  • python open函数返回值_open函数 · intermediate-python · 看云

    python open函数返回值_open函数 · intermediate-python · 看云#open函数#`open`函数[open](http://docs.python.org/dev/library/functions.html#open)函数可以打开一个文件。超级简单吧?大多数时候,我们看到它这样被使用:~~~f=open(‘photo.jpg’,’r+’)jpgdata=f.read()f.close()~~~我现在写这篇文章的原因,是大部分时间我看到`ope…

    2022年5月9日
    89

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号