關於androidManifest.xml的概敘以及intent-filter的詳細分析


AndroidManifest.xml配置文件對於Android應用開發來說是比較細但又很重要的基礎知識,本文旨在總結該配置文件中常用到的幾個屬性,以便日后查閱,至於那些比較細的屬性,主要是平時開發比較少用便不列舉,如果自己有需要直接在eclipse中直接“alt+/”就好了……

下面是一個比較通用的AndroidManifest.xml文件樣例(所建的工程目錄是Test),

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test" android:versionCode="1" android:versionName="1.0" >

    <!-- SDK版本的要求 -->
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
    
    <!-- 獲取系統相關的權限配置 如果不知道系統有多少屬性,不用那么麻煩去搜,直接在name便簽的雙引號里alt+/就好,多直接~ -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    
    <!-- 應用配置細節 
      icon是圖標;
      label是程序名稱顯示在titlebar中的
      theme是整個程序的主題,這里是自己文件定義的主題,如果想用android的就是@android:style/Theme再加alt+/就可以隨便選了
  
--> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
        <!-- Activity配置 -->
        <activity
android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <data android:host="MainActivity"/> </intent-filter> </activity> <!-- Service配置 --> <service > <intent-filter > <action /> <category /> <data /> </intent-filter> </service> <!-- Receive配置 --> <receiver > <intent-filter /> <meta-data /> </receiver> <!-- Provider配置 --> <provider > <grant-uri-permission /> <meta-data /> <path-permission /> </provider> <!-- 程序需要的外部庫 --> <uses-library /> </application> </manifest>

 

     縱觀上面的各個系統組件配置,基本都有一個Intent-filter屬性,來對系統中各種亂七八糟的intent進行過濾處理。因為android系統中會時時刻刻發送着各種消息各種intent,有些是系統發的有些是各個程序發的,怎么從那么多的消息中獲取自己想要的?那就過濾,Intent-filter就是起這個作用。下面我們來詳細問題一下這個Intent-filter的相關屬性,雖然各個組件的Intent-filter有差別,但是了解大概后,基本都差不多,舉一反三,觸類旁通嘛。

     Intent消息還包含有名稱、動作、數據、類別幾個重要屬性,同時這幾個點因過濾的標簽的不同而有一些差別。

  <action>標簽用於描述具體消息的名稱;

  <category>標簽用於表示能處理消息組件的類別;

  <data>標簽則用於描述消息需要處理的數據格式,支持使用正則表達式來限定數據來源;

例如以下是一個activity的intent-filter:

<intent-filter>  
    <action android:name="wytings msg" />  
    <category android:name="android.intent.category.DEFAULT" />  
    <data mimeType="*/*" />  
</intent-filter>  

只要系統中有程序發出的intent的action為wytings msg這個activity就可以收到。

category設置的是默認配置,一般category主要就是android.intent.category.DEFAULT和android.intent.category.LAUNCHER兩個(前者是默認配置,看action怎么設置,就怎么啟動,后者是代表的第一個啟動的基本都得和<action android:name="android.intent.action.MAIN" />一起用),其他的看自己需求,要是還是不知道還是alt+/就好了。

data中設置了處理類型,意思就是消息我收到了,如果不是我處理的類型,我依然不干活。比如我們把上面的action設置為android.intent.action.SEND(意思是當我們點發送的時候,系統就會調用這個activity,還有個前提是發送的文件得是它支持的,這里是什么都文件類型都支持)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM