10.6. 更新Manifest文件

优质
小牛编辑
133浏览
2023-12-01

10.6.更新Manifest文件

现在有了TimelineActivity,大可让它作为Yamba程序的“主界面”。毕竟比起自言自语,用户更喜欢关注朋友的动态。

这就需要更新manifest文件了。同原先一样,我们将TimelineActivity列在AndroidManifest.xml文件的<activity>元素中。可参考"Update Manifest File"一节中添加选项界面时的情景。

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

要把它设为程序的“主界面”,我们需要为它注册到特定的Intent。通常情况是,用户点击启动你的程序,系统就会发送一个Intent。你必须有个Activity能“侦听”到这个Intent才行,因此Android提供了IntentFilter,使之可以过滤出各自感兴趣的Intent。在XML中,它通过<intent-filter>元素表示,其下至少应含有一个<action>元素,以表示我们感兴趣的Intent。

你可以注意到,StatusActivity比PrefsActivity多出了一段XML代码,这便是IntentFilter的部分。

里面有个特殊的action,android.intent.action.MAIN,即指明了在用户打算启动我们的程序时首先启动的组件。除此之外还有个<category>元素,用以通知系统这个程序会被加入到main Launcher之中,这一来用户就可以见到我们程序的图标,点击即可启动。这个目录(category)的定义就是android.intent.category.LAUNCHER。

好,要把TimelineActivity置为主入口,我们只需加上相应的声明,再把StatusActivity中的代码挪过去即可。

例 10.9. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

android:versionCode="1" android:versionName="1.0" package="com.marakana.yamba5">

<application android:icon="@drawable/icon" android:label="@string/app_name"

android:name=".YambaApplication">

<activity android:name=".TimelineActivity" android:label="@string/titleTimeline">

<intent-filter> <!-- -->

<action android:name="android.intent.action.MAIN" /> <!-- -->

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

</intent-filter>

</activity>

<activity android:name=".PrefsActivity" android:label="@string/titlePrefs" />

<activity android:name=".StatusActivity" android:label="@string/titleStatus" /> <!-- -->

<service android:name=".UpdaterService" />

</application>

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET" />

</manifest>

  1. <intent-filter>将这个Activity所关心的Intent列出,并在系统中注册。
  2. 通知系统,这就是用户启动时显示的主界面。
  3. 目录LAUNCHER通知Home程序,将本程序的图标显示在Launcher中。
  4. StatusActivity就不需要IntentFilter了。