首页 > 代码库 > 小猪的Android入门之路 Day 6

小猪的Android入门之路 Day 6

小猪的Android入门之路 Day 6

Android应用核心:Intent(意图)

                                                       -----转载请注明出处:coder-pig


本节引言:


通过前面的学习中,我们都知道可以调用startActivity(intent)或者startActivityForResult(intent)

来启动一个新的Activity了,他们的参数都是Intent类型的实例,那么这个Intent是什么东西呢?

有什么用?还有一个问题,相信细心的朋友都发现AndroidManifest.xml的activity标签中有一个

intent-filter的东东,这个又是什么呢?好了,带着这些因为,我们来一点点地解析android应用的核心

Intent(意图)!害羞



本节学习路线图:



学习路线图解析:

①弄懂什么叫Intent,他是拿来干嘛的?

②区分显式Intent与隐式Intent,启动一个Activity的不同方式!

③了解Intent的七个属性,Flags不理解可以暂时放一放

④会使用显示Intent和隐式Intent去激活一个组件的流程,以及隐式Intent的预定义动作与自定义动作!



正文:


Intent的相关概念:





显式Intent与隐式Intent的区别:





Intent的七个属性:

ComponentName(组件名称):



Action(动作)与Category(种类):




DATA(数据)与Type(MIME类型)




Extras(额外)




Flags(标记)




Intent的使用:


显式Intent:

这个是我们以前用的最多的一种方式,通常启动第二个Activity,我们只需要填入要启动的

Activity的全限定类名,在调用startActivity( )或者startActivityForResult()即可


代码示例:点击按钮返回HOME界面

效果图:



核心代码:

Intent it = new Intent();
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_HOME);
startActivity(it);



代码示例二:点击按钮打开百度:

效果图如下:




核心代码:

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(Uri.parse("http://www.baidu.com"));
startActivity(it);








隐式Intent:






预定义动作的隐式Intent:

代码示例:点击按钮后,所有Action为VIEW的Activity被筛选出来,由用户进一步选择:

运行效果图:


核心代码流程:

建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);

最后在Intent中添加以下代码:

        <activity android:name=".SecondActivity"
            android:label="第二个Activity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>           
        </activity>

接着就可以了,代码很简单!




自定义动作的隐式Intent

代码示例:使用自定义的Action与category来激活另一个Activity

运行效果图:


这里要注意虽然我们自定义了一个category,但是还是要把这个默认的加上,不然会报错的:

在AndroidManifest.xml的第二个activity标签中加入:

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





相关代码下载:

返回Home界面:代码下载

打开浏览器:代码下载

包含预定义动作的隐式Intent:代码下载

包含自定义动作的隐式Intent:代码下载




ps:对于系统预定义的一些Action与Category,大家可以按需要自己百度,后续有时间会整理下,写一篇博文!

当然你也可以查看下官方的文档,在sdk-->docs-->reference-->android--->content--->Intent.html中!