安卓清单 - 意图过滤器和活动

2022-09-03 06:06:32

有人可以解释清单中的以下行吗 -

    <activity
        android:name=".AboutUs"
        android:label="@string/app_name">
        <intent-filter >
            <action android:name="com.example.app1.ABOUT" />
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>

    </activity>    

活动和意向过滤器中的字段如何重要,何时使用/引用它们?对不起,我试图阅读文档,但仍然无法弄清楚。

谢谢


答案 1
android:name=".AboutUs"

这是您的活动类的名称,前面的点是您的包的速记符号。因此,这实际上代表这意味着表示此活动的java文件称为com.your.package.name.AboutUsAboutUs.java

android:label="@string/app_name"

label 是显示在启动器中(如果活动在启动器中列出)和活动打开时窗口顶部的字符串。

<intent-filter > ... </intent-filter>

意向过滤器定义您的活动“侦听”以启动的意向。

<action android:name="com.example.app1.ABOUT" />
<category android:name="android.intent.category.DEFAULT"/>

操作和类别都是在 Intent 被“触发”到系统中之前在 Intent 上设置的字段。然后,系统将查找与操作和类别匹配的任何活动,如果找到一个,则它将启动该活动,或者如果找到多个活动,它将向用户显示所有这些活动并让他们选择。

在你的情况下,你正在侦听的操作是特定于你的应用的自定义操作,而不是其中一个系统操作。com.example.app1.ABOUT

因此,以下是启动此特定活动的意图可能如下所示:

Intent i = new Intent();
i.setAction("com.example.app1.ABOUT");
i.addCategory("android.intent.category.DEFAULT");
startActivity(i);

请注意,由于您已创建自定义操作,因此此意向不需要访问您的操作,因此从技术上讲,可以从设备上的任何应用触发此意向,并启动到您的活动中。AboutUs.class


答案 2

对于你有这个答案,对于默认类别,你有这个答案ACTION


推荐