<java基础>零起点学Android(二)Intent 意图

来源:互联网 发布:java 汉字转unicode 编辑:程序博客网 时间:2024/05/08 14:56

第一篇往往都是一些概括和介绍,以便大家方便理解一些所要学习的东西。


下面我们就要更加细节的介绍一些关于android的类! 大家可能更习惯称起为组件什么的。

我更加愿意追究其本源,因为你使用的组件都是人写的类,所以我们称其为类,或许更能方便你理解,也更加会有一些成就感。


Intent 是用于要执行的操作或通信所使用。

Android 基本上所有的事情都是涉及Intent这个类的。

intent 可以分为显示 与 隐示

显示:明确指定了组件的名称,因为开发人员一般不会知道其他应用组件,

所以显示的intent一般会用于内部传递给指定目标类的实例。


比如: Intent intent = new Intent(A._Activity.this,B_Activity.this)

startActivity(intent)

这样就可以启动B_Activity


隐示:Component name 没有附值,不会指定目标名称。

通常用于启动其他应用组件,比如登陆账号授权跳转。

(使用隐示的intent操作时, Android 会搜索合适的响应组件,

之后将Intent对象内容跟intent filter(intent过滤器) 进行比较,

有过滤器才能接受隐示的intent 反之不能,有过滤器是可以接受显示的intent的。

android 在过滤的时候会考虑actioncategoryDataType )

想了解隐式的Intent 我们先进入AndroidManifest.xml

<activity android:name=".MyActivity"                  android:label="@string/app_name"                android:theme="@android:style/Theme.Light">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>
其中 
<intent-filter>

与intent 有很大关联。看他的名字就知道他就是Intent拦截器。

没错、action是用来描述Intent执行动作名的字符串,并且一个拦截器中只能定义一个action标签。

有些时候我们还可以自定义Action 字符串,后面我遇到会详细说。(基本上就是包名+action名字 )


category是用来表示Intent的类别,也是个该死的字符串,但是他在一个拦截器中可以定义多个。

基本上android 用字符串当标识是常见的事情。当你想用隐身启动intent的时候必须Action与category同时对应上才可以

启动这个意图。

拦截器的标签还包括:

Component name 他是用来标识组件名称的,也是一个字符串。

接收Intent的完整名称包括包名,这样就会把intent发送到指定的实例中去。

Data 看字面就知道是数据啦。

Extra 附加信息也不多说 (其实是个map)

Flag 真正数据Intent 的标识。bit值

Type intent数据的mime类型(设定某种扩展名的文件用一种应用程序来打开的方式类型),

就类似你在这个程序下载个电影需要另一个程序播放。

通常android 会根据数据类型推断,如果指定了类型 就不会自动推断了。




启动隐身Intent的代码:

Intent intent = new Intent(Action_name);//这个Action_name就是对应在主配置文件中配置Intent拦截器的action-name

startActivity(intent)

注意:上文说的要和category配对,这里我们没有指定category 却仍然能找到对应的组件。因为什么呢?是因为这里面使用

了android为我们准备好的默认category。

要是我们在配置拦截器中写了category 的name 我们就要添加下面这样一段代码。

intent.addCategory (category_name)


拓展:

     Intent intent = new Intent(Intent.Action_View);

     intent.setData(Uri.parse("http://www.baidu.com"));

     startActivity(intent);

上面则可以开启一个百度的首页。当然还需要在住配置文件中加入权限

  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);              

startActivity(intent);

上面则可以开启系统相机。当然也还需要在住配置文件中加入权限

 

等等等吧~


注意:我这里都用的Activity启动来说明事例,单intent并不是只能启动Activity.四大组件都可以再主配置文件中通过Intent启动

好啦 大家需要好好消化下。


接下来我们就会讲android 的主要配置文件了。


0 0
原创粉丝点击