Intent这东西,在Android中的地位至关重要,甚至成为"Android第五大组件"。
在我们的常规业务开发中,各个页面的跳转,service的使用,打开相机,app内分享,广播的使用等等都必须用到它。在我们的framework层里,它的身影也随处可见。
一、什么是Intent?
Intent是Android系统用来抽象描述要执行的一个操作,也可以在不同组件之间进行沟通和消息传递。
Intent意图可以是明确的指定组件的名称,这样你可以精确的启动某个系统组件,比如启动一个Activity。它也可以是模糊的,没有指定组件名称,只要是能够匹配到这个Intent的应用都可以接收到,比如发送一个拍照Intent,所有的拍照应用都会响应。
二、Intent的分类
intent分为显式Intent和隐式Intent:
显式的Intent就是你已经知道要启动的组件名称,比如某个Activity的包名和类名,在Intent中明确的指定了这个组件(Activity),一般来说这种Intent经常用在一个应用中,因为你已经明确的知道要启动的组件名称。
隐式的Intent就是你不知道要启动的组件名称,只知道一个Intent动作要执行,比如:拍照,分享,打开相册,查看地图。一般来说这种Intent用在不同的应用之间传递信息。
当你创建一个显式Intent来启动一个Activity或者Service时,系统会立刻启动那个组件通过你的Intent对象。
当你创建一个隐式Intent,系统会根据manifest中的intent filter寻找匹配的组件,如果你发送的Intent匹配到一个intent filter,系统会把你的Intent传递给该filter对应的组件(Activity、Service等),并且启动它。如果找到多个匹配的intent filter对应的应用程序,则会弹出一个对话框让你选择哪个应用程序接受你的Intent。
三、intent的简单使用
1.跳转指定页面(显示)
mBinding.acLockSettingIcon.setOnClickListener {
startActivity(Intent(this, SettingActivity::class.java)
)
}
2.打开网页(隐式)
public void invokeWebBrowser(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
startActivity(intent);
}
3.打电话(隐式)
public void call(View view) {
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:110"));
startActivity(intent);
}


2352

被折叠的 条评论
为什么被折叠?



