intent

1、intent描述

    intent是一个对将要进行的操作的抽象描述,主要有三种表现形式:

    通过startActivity启动一个新的Activity

    通过sendBroadcast将intent发送给任何对该intent感兴趣的BroadcastReceiver

    通过startService或者bindService和后台的service进行交互

2、intent详解

    intent中对某个操作的抽象描述主要包含:Action、data、type、category、extras、component

    Action:Android中自定义了许多标准的Action。

        ACTION_MAIN(标记程序的入口activity)

        ACTION_VIEW(显示数据,常和data一起使用)

        ACTION_DIAL(拨号,常和data一起使用)

        ACTION_PICK

        ACTION_EDIT

        ACTION_DELETE

    data:Android中采用URI来表示data。下面是一些action/data对:

        VIEW_ACTOIN content://contacts/     显示所有联系人的列表

        VIEW_ACTOIN content://contacts/1   显示标示符为1的联系人的详细信息

        EDIT_ACTOIN content://contacts/1    编辑标示符为1的联系人的详细信息

        PICK_ACTOIN content://contacts/      显示所有联系人的列表,并允许用户选择一个联系人,把这个联系人返回给父activity。

    type:显式指定intent的数据类型,不知道具体有什么用,不过应用开发时基本也用不到??

    category:表示执行动作的附加信息。

        LAUNCHER_CATEGORY表示intent的接受者应该在Launcher中作为顶级应用出现

        ALTERNATIVE_CATEGORY表示intent是一系列可选动作中的一个。

    extras:其它所有附加信息的集合。经常用来保存一些需要传递给其它activity的额外数据信息。

    component:指定intent的目标组件的类名称。通常Android会根据intent中的其他属性信息,如Action、data、type、category等进行查找,最终找到一个与之匹配的目标组件。但是如果component这个属性有设置的话,将直接使用它所设置的目标组件,而不再执行上述查找过程。

3、activity中intent使用

    //应用程序启动的activity

    <activity android:name=".ActivityMain">

        <intent-filter>

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

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

        </intent_filter>

    </activity>

    //使用category的intent

    <activity android:name=".ActivityAuthSuccess">

        <intent-filter>

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

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

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

            <data android:scheme"http" />

        </intent_filter>

    </activity>

4、利用intent来广播(BroadcastReceiver)

    广播事件

        public static final String NEW_BROADCAST = "com.android.action.NEW_BROADCAST";

        Intent intent = new Intent(NEW_BROADCAST);

        intent.putExtra( "data" , "test" );

        sendBroadcast( intent );

    广播接收器

        public class MyBroadcastReceiver extends BroadcastReceiver {

            @Override

            public void onReceive( Context context, Intent intent ){

                ...

            }

        }

    注册和注销广播

        //AndroidManifest.xml中注册

        <receiver android:name="MyBroadcastReceiver">

            <intent-filter>

                <action android:name="com.android.action.NEW_BROADCAST" />

            </intent-filter>

        </receiver>

        //代码中注册和注销

        IntentFilter filter = new IntentFilter(NEW_BROADCAST);

        MyBroadcastReceiver broadcastReceiver = new  MyBroadcastReceiver();

        registerReceiver( broadcastReceiver, filter );

        unregisterReceiver( broadcastReceiver );

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值