Intent

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。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容