版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/qq_29477223/article/details/80800239
Android中Intent寻找目标组件的方式分为两种,一种是显式意图,另一种是隐式意图
1.显式意图
在通过Intent启动Activity时,需要明确指定激活组件的名称。在程序中,如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity,示例代码如下
Intent intent=new Intent(this,Activity02.class);//创建Intent对象
startActivity(intent);//开启Activity
上述代码主要是通过Intent的构造方法来创建Intent对象,构造方法接受两个参数,一个是Context要求提供一个启动Activity的上下文,第二个参数Class则是指定要启动的目标Activity。
除了通过指定类名开启组件外,显式意图还可以根据目标组件的包名、全路径名来指定开启组件
intent.setClassName("com.example.Activity","com.example.Activity.XXX");
startActivity(intent);
2.隐式意图
没有明确指定组件名的Intent称为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。
<activity android:name="com.example.intent.Activity02">
<intent-filter>
<action android:name="com.example.xxx"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
上述代码中,<action>标签指明了当前Activity可以相应的动作为"com.example.xxx”,而<category>标签则包含了一些类别的信息,只有当<action>和<category>中的内容同时匹配时,Activity才会同时被开启
在Activity类中代码如下
Intent intent=new Intent();//创建Intent对象
intent.setAction("com.example.xxx");//设置动作和清单文件一样
startActivity(intent);//开启Activity
3.两种意图使用的情景
显式意图开启组件时必须要指定组件的名称,一般只在本应用程序切换组件时使用
隐式意图功能要比显式意图更加强大,不仅可以开启本应用的组件,还可以开启其他应用的组件,例如打开系统自带的功能(照相机,浏览器等)。