16

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

    <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>    

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

谢谢

4

3 回答 3

21
android:name=".AboutUs"

这是您的 Activity 类的名称,前面的点是您的包的简写符号。所以这实际上代表com.your.package.name.AboutUs这意味着你的代表这个活动的java文件被调用AboutUs.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"/>

Action 和 category 都是在 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,因此从技术上讲,此意图可以从设备上的任何应用程序中触发,并且会启动到您的活动中。

于 2013-05-18T13:55:45.857 回答
1

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

于 2013-05-18T13:53:49.867 回答
1

Activity 是一个应用程序组件,它提供一个屏幕,用户可以与该屏幕进行交互以执行某些操作,例如拨打电话、拍照、发送电子邮件或查看地图。要声明您的活动,请打开清单文件并添加一个元素作为该元素的子元素,就像您的示例一样。

  • android:name 属性是唯一需要的属性——它指定了活动的类名。
  • android:label 属性是整个应用程序的用户可读标签,也是每个应用程序组件的默认标签

一个元素还可以指定各种意图过滤器——使用该元素——以声明其他应用程序组件如何激活它。

  • 该元素指定这是应用程序的“主”入口点。
  • 该元素指定此活动应列在系统的应用程序启动器中(以允许用户启动此活动)。

请参考http://developer.android.com/guide/components/activities.html

于 2013-05-18T13:58:28.703 回答