Android学习笔记整理(8)--Activity的显式意图和隐式意图

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 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.两种意图使用的情景

显式意图开启组件时必须要指定组件的名称,一般只在本应用程序切换组件时使用

隐式意图功能要比显式意图更加强大,不仅可以开启本应用的组件,还可以开启其他应用的组件,例如打开系统自带的功能(照相机,浏览器等)。

猜你喜欢

转载自blog.csdn.net/qq_29477223/article/details/80800239