Intent
显示意图
btn_goNext.setOclickListener{
val IntentGoNext = Intent(this,SecendActivity::class.java)
//发送意图
startActivity(IntentGoNext)
}
隐式意图
//AndroidManifest.xml配置
<intent-filter>
<action android:name="自己的 广播频道/动作 | 系统的"></action>
<category android:name="自己额外附加信息 | 系统的" />
</intent-filter>
1.action 和 category 决定了这个页面可以响应哪些意图
2.只有意图的 action 和 category 与页面的 action 和 category 完全匹配才能做出响应
3.当 category 值为 android.intent.category.DEFAULT时,我们创建意图时就不用手动指定 category . 因为这个在创建意图的时候会自动添加
btn_goNext.setOclickListener{
val IntentGoNext = Intent("my动作")
IntentGoNext.addcategory("my附加信息")
//发送意图
startActivity(IntentGoNext)
}
//此时所有包含<my动作>|<my附加信息>的activity都会被作为选择
隐式意图扩展
隐式意图使得我们可以调用其他app的activity
//开启浏览器访问百度
btn_goNext.setOclickListener{
val IntentGoNext = Intent(Intent.ACTIION_VIEW)//内置动作
IntentGoNext.data = Uri.parse("https://www.baidu.com")
//发送意图
startActivity(IntentGoNext)
}
//开启电话应用
btn_goNext.setOclickListener{
val IntentGoNext = Intent(Intent.ACTIION_DIAL)//内置动作
IntentGoNext.data = Uri.parse("tel:10086")//tel协议
//发送意图
startActivity(IntentGoNext)
}
//页面响应浏览器意图
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="https"/>//响应所有https协议的意图
</intent-filter>
//页面响应电话意图
<intent-filter>
<action android:name="android.intent.action.DALL"/>
<data android:scheme="tel"/>//响应所有tel协议的意图
</intent-filter>
Intent.data
Intent.data接受一个Uri对象 用来指定意图正在操作的数据
URI (统一资源标志符)
URI格式 : scheme://host:port/path
可以在intent-filter里面的data标签筛选意图
data标签属性
● android:scheme。用于指定数据的协议部分,如上例中的https、tel部分
● android:host。用于指定数据的主机名部分,如上例中的www.baidu.com部分。
● android:port。用于指定数据的端口部分,一般紧随在主机名之后。
● android:path。用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
Intent.type
MIME Type指数据的类型,例如:video/mp4,video/avi
可以在intent-filter里面的data标签筛选意图
data标签属性
● android:mimeType。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。