Android 應用程式中的元件及 manifest

Android - Manifest

Andorid 應用程式以鬆散耦合的方式連結兩個元件,而連結的方式是透過專案的mainfest來描述。

建立 Android 應用程式的元件:

  • Activities:
    屬於應用程式的展現層。只要你的程式是有畫面要呈現在螢幕上的,就要繼承Activity class,Activity使用Views來組成使用者介面,Views可以用來顯示資訊,並對使用者的動作做出反應。如果用桌面應用程式(例如VB)的概念來說,Activity就相當於Form(表單,也就是視窗)。
  • Services:
    屬於不可見(沒有畫面呈現在螢幕上)的應用程式。它會在暗地裡更新應用程式的資料來源及Activity,也可以觸發Notifications(通知)。它常被用來執行例常性的程序。
  • Content Providers:
    分享式的資料儲存機制。它可以管理和分享應用程式的database(資料庫),也可以讓兩個應用程式的資料互相分享,意思是說,一個應用程式可以透過設定Content Provider來允許接受其他應用程式送來的資料,也可以讓自己本身的資料分享給其他應用程式使用。
  • Intents:
    簡單的訊息傳送框架。你可以透過Intent對全系統做訊息廣播,或僅僅針對某一個Activity或Service傳送訊息,系統會自行決定做出適合的動作。
  • Broadcast Receivers:
    Intent廣播的接收者。你可以建立並註冊一個Broadcast Receiver,來讓你的應用程式偵聽廣播中符合要求的Intent。
  • Notifications:
    使用者通知框架。Notification可以讓你發送訊號給使用者,而不用轉移應用程式的焦點(focus),或中斷目前的Activities,它可以讓一個Service或Broadcast Receiver引起使用者的注意。例如:當你的手機收到一封簡訊或一通電話,可以讓手機閃爍燈光、響鈴、顯示小圖示或發出一個訊息等等方式來告知使用者。你可以在你的應用程式中使用Nofification來觸發這些事件。

manifest 檔

每個 Android Project 都有一個 AndroidManifest.xml 檔,用來定義資料結構、應用程式的中繼資料(像是icon或theme)和元件(Activity, Service ...)。

AndroidManifest.xml

檔案中的 root 標籤是<manifest>,看起來如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogspot.tonycube.android"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

說明

  • <application>標籤:
    一個manifest只能包含一個application節點,它使用屬性(attribute)來設定應用程式的中繼資料(包含應用程式的title、icon和theme),它也可以被當成其他元件的容器,可以使用Activity, Service, Content Provider, and Broadcast Receiver標籤來指定應用程式使用的元件。
  • <activity>標籤:
    做為Activity在螢幕上顯示的設定,用 android:name 屬性可以用來指定對應的Activity class。另外,它必須包含主要啟動的Activity,否則會出現 runtime exception。每個Activity標籤可以包含許多的 <intent-filter> 子標籤。
  • <service>標籤:
    和<activity>標籤一樣,一個<service>對應到一個Service class,一樣也有<intent-filter> 子標籤。
    <service android:enabled="true" android:name=".MyService"></service>
  • <provider>標籤:
    對應到Content Provider class,用來管理資料庫的存取和兩個應用程式間的資料交換。
    <provider android:permission="com.paad.MY_PERMISSION"
    android:name=".MyContentProvider"
    android:enabled="true"
    android:authorities="com.paad.myapp.MyContentProvider">
    </provider>
  • <receiver>標籤:
    使用receiver標籤,你可以不需要啟動應用程式,就可以先註冊一個Broadcast Receiver。它像是全域的事件偵聽器,只要註冊一次,就可以執行應用程式中任何地方發出的,符合我們要偵聽的意圖(Intent)。當你在manifest中註冊Broadcast Receiver後,它就可以完全自動地執行。
    <receiver android:enabled="true"
    android:label="My Broadcast Receiver"
    android:name=".MyBroadcastReceiver">
    </receiver>
  • <uses-permission>標籤:
    應用程式的執行許可。
    <uses-permission android:name="android.permission.ACCESS_LOCATION">
    </uses-permission>
  • <permission>標籤:
    你必須在manifest中定義一個permission,來讓你限制元件的存取。元件可以透過其屬性 android:permission 來指定要使用哪一個限制條件。
    <permission android:name="com.paad.DETONATE_DEVICE"
    android:protectionLevel="dangerous"android:label="Self Destruct"
    android:description="@string/detonate_description">
    </permission>
  • <instrumentation>標籤:
    Instrumentation class提供一個測試框架,讓你可以對Activity 和 Service個測試。它提供一個掛鈎來監示應用程式以及它和系統資源間的互動。為每個test class建立一個節點。
    <instrumentation android:label="My Test"
    android:name=".MyTestClass"
    android:targetPackage="com.paad.aPackage">
    </instrumentation>
本文網址:http://blog.tonycube.com/2009/07/androidmanifest.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。