Android初学习之intent-filter意图过滤器

浅谈 intent filter对activity组件的应用

Intent Filter就是用来注册 Activity 、Service 、 Broadcast、Receiver(四大组件) 具有能在某种数据上执行一个动作的能力。使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组
件、本地的或第三方的应用程序。

注:因为是初学,我们在这里只浅谈activity并进行一些实验,了解 action android:name=“android.intent.action.MAIN” /
category android:name=“android.intent.category.LAUNCHER” /
的作用。

android.intent.action.MAIN表明了一个应用启动时首先启动这个Activity的动作。
android.intent.category.LAUNCHER 当activity中出现这个东西的时候,说明,这个页面就要通过APP图标来开启。 (下面会实验说明)

代码:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这个代码块解决的问题是:一个应用程序可以有许多个activity(页面),并且它们是同级的,那么在启动APP时,页面应该如何显示?OK,为了解决这个问题,我们来做实验(实验五之后添加SecondActivity):
实验一:去掉intent-filter

<activity android:name=".MainActivity">
            
  </activity>

在这里插入图片描述
实验二:加上intent-filter但不添加action和category

<activity android:name=".MainActivity">
            <intent-filter>
            </intent-filter>
        </activity>


实验三:添加action属性

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

此时没有报错,会提示手机安装程序。
此时我给大家说明一下实验现象:
1.手机提示安装,安装完后自动打开
2.but!当我返回手机桌面的时候,发现界面没有APP图标!! 对没有APP图标。
3.当我打开手机的应用管理的时候,可以看到这个应用。
这个问题说明android.intent.category.LAUNCHER 当activity中出现这个东西的时候,说明,这个页面就要通过APP图标来开启。 没有的话,就没有图标

实验四:去掉action加上category

<activity android:name=".MainActivity">
            <intent-filter>
                  <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

此时运行成功:
实验现象:
和实验三差不多,但是有一点不同: 安装完成后没有自动打开。
同时桌面也没有图标。当我打开应用管理器的时候,实验三中可以强制停用此应用,但是实验四没有,也就是说,安装后,这个应用没有打开。但是为什么没有显示呢? 显示了又没用,点不开,显示它干嘛。 实验四验证了action动作的作用。 同时,说明动作:给这个APP的这个页面设定“最重要”的标签的动作,让程序识别,从而“第一”打开。
实验五:添加Secondactivity,并且都加上action动作和cotegory类别。(SecondActivity.java代码就不贴了,跟MainActivity不同的地方就是setContentView中的id是我设置的另一个xml布局文件,以便之后实验需要)
代码:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

此时运行现象:

在这里插入图片描述
出现两个APP图标。两个图标,分别是我设置的两个activity页面的内容。 当我打开后台时,后台运行的程序只有一个,而不是由两个。又验证了android.intent.category.LAUNCHER 当activity中出现这个东西的时候,说明,这个页面就要通过APP图标来开启。

实验六:单独去掉第二个activity页面的action动作。 以及单独去掉第二个页面的cotegory属性。
实验现象:只出现第一个页面的图标,第二个页面没有显示。

OKOK,意图过滤器在activity中的action动作,和cotegory类别 的应用就到这里实验完毕,之后会补充内容。

发布了3 篇原创文章 · 获赞 4 · 访问量 159

猜你喜欢

转载自blog.csdn.net/weixin_44696542/article/details/104408510