<java基础>零起点学Android(二)Intent 意图
2014-09-26 21:33
429 查看
第一篇往往都是一些概括和介绍,以便大家方便理解一些所要学习的东西。
下面我们就要更加细节的介绍一些关于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
与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 的主要配置文件了。
下面我们就要更加细节的介绍一些关于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 的主要配置文件了。
相关文章推荐
- <java基础>零起点学Android(五)之应用窗口
- <java基础>零起点学Android(三)
- <java基础>零起点学Android(六)
- <java基础>零起点学Android(一)大体介绍
- 用人类的思维方式去写更容易维护的代码——用<抽象-基础-逻辑>模式开发Java(Android)程序
- android之隐示意图--在一个 <intent-filter>意图中用两个category启动这个activity
- <Android+Java>(二)第一个模拟器
- <java——基础(二)>
- <Android+Java>(三)连接真机进行调试
- Java笔记7 Java基础加强<1>反射
- <Android+Java>Ecplise中Package Explorer显示空白异常及字体更改
- <Android+Java>设置开机启动---开机解锁并直接进入应用
- <Android+Java>(一) 打开已有的工程
- Java笔记7 Java基础加强<4>泛型
- <category android:name="android.intent.category.DEFAULT" /> 惹的祸
- android之隐示意图--在一个 <intent-filter>意图中用两个action启动这个activity
- Java笔记7 Java基础加强<3>注解
- <黑马程序员>---java基础---多线程知识
- Java笔记7 Java基础加强<6>加密
- <Android+Java>创建的Android工程的结构