Android基础----Intent

简介:

在最开始学习Android时候我们都会被告知Android的四大组件:Activity,BroadcastReceiver,Service,Intent,之前已经讲过前边的三大组件,现在我们来看看Intent。Intent(意图),就像是其中文翻译一样,intent其实表达的是一种意图,即要让前边的三大组件怎么配合协作,所以说Intent其实是Android系统中的信使,负责调度各组件,传递消息。Intnet分为显示Intent和隐式Intent。

基本用法:

显式Intent:

直接指定Intent要启动的具体的组件的名称,一般建议用这种方式启动Service

 //显式的指定Intent要启动的Activity
        Intent intent = new Intent(ScrollingActivity.this,SecondActivity.class);
        //启动Activity或者是Service
        startActivity(intent);
        startService(intent);
隐式Intent:

并不是直接指定要启动的组件,而是为intent添加相应的匹配规则,然后根据四大组件在配置文件中定义好的过滤规则进行过滤匹配。

为Intent定义规则:

Intent intent1 = new Intent();
intent.setAction();
intent.addCategory();
intent.setDataAndType();
//启动Activity或者是Service
startActivity(intent);
startService(intent);

在AndroidManifest文件中为组件定义IntentFilter进行过滤:

 <activity
            android:name=".ScrollingActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <data android:mimeType="video/mpeg"/>
            </intent-filter>
        </activity>
IntentFilter过滤规则:
action:

Intent中的action必须要能和intentFilter中的action匹配(字符串值完全一样),也就是说,对于intent中的action,只要有一个和IntentFilter中定义的action匹配就算是匹配成功。同时action区分大小写。

category:

Intent中的category可以没有,这样系统就会为其配置一个默认的category:

< category android:name=”android.intent.category.DEFAULT”/>

若为Intent配置了category,则要求intent中配置的所有category都能在intentFilter中匹配到,只有intent中所有的category都匹配成功才算匹配成功。

data:

data的匹配规则和action差不多,但是也有区别。首先看一下data的结构,它由两部分组成:mimeType和URI。

  • mimeType指媒体类型,比如image/jpeg表示图片类型中.jpeg格式的图片
  • URI中包含的比较多:

< scheme>://< host >:< port >/[ < path >|< pathPrefix > | < pathPattern >]

实例:
content://com.example.project:200/folder/subfolder/etc
http://www.baidu.com:80/search/info

  • scheme:URI的模式,比如说http,file,content等,只有指定了这个参数之后,后续的才会有意义。
  • host:URI的主机名,同样是必须的字段
  • port:指定主机的端口号,同样是必须的字段
  • path/pathPatter/pathPrefix:表示路径信息,path表示完整的路径信息,pathPatter也可以表示完整的路径信息,但是其可以包含通配符,使用正则表达式,pathPrefix表示路径的前缀信息。可选其一使用。

注: 在给intent设置data信息时需要使用setDataAndType()方法才可以同时设置两者,不能分开使用setData()和setType()方法,因为这两个方法会互相消除另一个属性。

应用启动入口:

我们新建一个应用项目时会在配置清单文件中看见这两个:

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

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

这两个属性同时作用标明了程序的入口,缺一不可,同时也正是因为这两个属性,程序才会显示在应用列表中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值