嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > android应用程序开发-Intent的使用(二)

android应用程序开发-Intent的使用(二)

在中,我们详细介绍了显式Intent的使用,这次我们详细介绍隐式Intent是如何使用的。

一、隐式Intent

相比较于显式Intent,隐式Intent就含蓄许多了,它并不明确指出我们想要启动的活动,而是通过设置action和category等一系列抽象的信息,交由操作系统去分析这个Intent并帮我们找出合适的活动启动。从我们知道通过AndroidStudio创建第一个活动的时候AndroidManifest.xml文件<activity>标签下会自动配置<intent-filter>中的内容为:

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

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

这里相当于使用了隐式Intent,作为主活动,由操作系统启动的。这里<action>和<category>组成了一个Intent过滤器,只有完全匹配才能启动该活动。

<action>

    在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。

<category>

    在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。

创建第一个活动时,AndroidStudio会帮我们设置好上述两个标签的内容,但是我们也可以自定义自己的Intent过滤器,只要修改<intent-filter>下若干标签内容即可。

不管是显式intent和隐式Intent工作原理都是一样的,功能也都一样,下图是Intent启动活动的工作原理:

二、隐式Intent的使用

在AndroidStudio上创建FirstActivity作为主活动,再新建一个SecondActivity活动作为被启动的活动,添加如下代码:

<activity android:name=".SecondActivity" >
    <intent-filter>
            <action android:name="com.example.activitytest.ACTION_START" />
            <category android:name="com.example.activitytest.MY_CATEGORY" />
    </intent-filter>
</activity>

这里我们自定义了Intent接受的操作和Intent的类型。现在只有<action>和<category>中的内容完全和Intent指定的<action>和<category>匹配才能启动SecondActivity这个活动。在FirstActivity中添加一个按钮并修改按钮点击的事件方法,代码如下:

Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
                intent.addCategory("com.example.activitytest.MY_CATEGORY");
                startActivity(intent);
            }
        });

可以看到我们使用了Intent的另外一个构造函数,直接将action的字符串传入进去,表明我们想要启动能够响应com.ezample.activitytest.ACTION_START这个action的活动,同时我们指定了一个自定义的category,值为com.example.activitytest.MY_CATEGORY。编译运行程序,点击按钮就会启动SecondActivity这个活动了。