Mọi ứng dụng đều cần có một file AndroidManifest.xml (file có cấu trúc XML) ở thư mục gốc của dự án. File mô tả này để cung cấp các thông tin cần thiết về ứng dụng cho hệ thống Android. Tóm tắt lại thì các thứ trong file mô tả Manifest này cần theo cấu trúc sau:

  • Chứa tên package dùng cho ứng dụng (tên package là duy nhất nhằm xác định đến package).
  • Mô tả các thành phần của ứng dụng: các Activity, Service, Broadcast Receiver, Content Provider.
  • Xác định các tiến trình chạy trong ứng dụng.
  • Khai báo các quyền truy cập hệ thống.

Cấu trúc cơ bản của file AndroidManifest.xml

File này có định dạng có thể gồm các thành phần chứa trong thẻ như sau:

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

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>

Như vậy nó thường có các thẻ sau bên trong:

<action>, <activity>, <activity-alias>, <application>, <category>, <data>, <grant-uri-permission>, <instrumentation>, <intent-filter>, <manifest>, <meta-data>, <permission>, <permission-group>, <permission-tree>, <provider>, <receiver>, <service>, <supports-screens>, <uses-configuration>, <uses-feature>, <uses-library>, <uses-permission>, <uses-sdk> 

Dưới đây cập nhật về các thẻ hay dùng khi lập trình Android

Mô tả receiver

<receiver android:directBootAware=["true" | "false"] <!--Có nhận được Broadcast khi khóa máy hay không-->
          android:enabled=["true" | "false"] <!--Có kích hoạt hay không-->
          android:exported=["true" | "false"] <!--Có nhận được Broadcast từ thành phần bên ngoài ứng dụng hay không-->
          android:icon="drawable resource"
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    . . .
</receiver>

Thẻ receiver khai báo một BroadcastReceiver như là một thành phần của ứng dụng, cho phép ứng dụng nhận các chỉ thị phát đi bởi hệ thống, ứng dụng nhận được các chỉ thị này thậm chí khi các thành phần của ứng dụng đang không chạy.  Ngoài cách mô tả bằng Manifest như trên ứng dụng có thể khai báo nhận Broadcast trong code bằng cách gọi Context.registerReceiver(). Hết sức lưu ý về số lượng Broadcast cho ứng dụng vì có thế là nguyên nhân tới hao tổn pin của thiết bị.

android:name

Tên của lớp triển khai mã broadcast receiver, là một lớp kế thừa từ BroadcastReceiver được code trong ứng dụng của bạn. Ví dụ bạn xây dựng một lớp kế thừa từ BroadcastReceiver có tên Myreceiver trong package: com.example.myproject thì tên này sẽ là: com.example.myproject.Myreceiver. Trường này không có giá trị mặc định bắt buộc cần khai báo.

Receiver có thể chứa bên trong intent-filter, meta-data.

Mô tả intent-filter

<intent-filter android:icon="drawable resource"
               android:label="string resource"
               android:priority="integer" >
    . . .
</intent-filter>

Thể này mô tả kiểu intent (chỉ thị) mà một Activity, Service hay Broadcast Receiver nhận được.  Nội dung của intent-filter được diễn tả bởi các thẻ bên trong nó gồm thẻ: action, category, meta-data. Trong đó thẻ action bắt buộc phải có.

Mô tả action

<action android:name="string" />

Chỉ ra tên của Action của intent-filter. Các action tiểu chuẩn của hệ thống thường là một chuỗi với tên theo dạng: ACTION_string constants.  Tên này là của hệ thống hoặc do bạn tự định nghĩa khi gửi đi Broadcast trong ứng dụng. Nếu bạn tự định nghĩa tên này thì nên theo chuẩn com.example.project.YOURNAMEACTION.

Mô tả meta-data 

<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string" />

Mô tả cặp dữ liệu TÊN-GIÁ TRỊ được cung cấp cho thẻ cha của meta-data.

  • android:name : tên của dữ liệu.
  • android:value: giá trị
  • android:resource : Chỉ ra tài nguyên (Resource) là giá trị gán cho dữ liệu.