<receiver
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name=".MBroadcastReceiver"
android:permission="string"
android:process="string" >
//用于接收網(wǎng)絡(luò)狀態(tài)改變時發(fā)出的廣播
<intent-filter android:priority="1">
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
- android:enabled
這個屬性用于定義系統(tǒng)是否能夠?qū)嵗@個廣播接收器燥筷,如果設(shè)置為true益涧,則能夠?qū)嵗绻O(shè)置為false驯鳖,則不能被實例化闲询。默認(rèn)值是true。
<application>
元素有它自己的enabled
屬性浅辙,這個屬性會應(yīng)用給應(yīng)用程序的所有組件扭弧,包括廣播接收器。<application>
和<receiver>
元素的這個屬性都必須是true记舆,這個廣播接收器才能夠被啟用鸽捻。如果有一個被設(shè)置為false,該廣播接收器會被禁止實例化泽腮。
- android:exported
這個屬性用于指示該廣播接收器是否能夠接收來自應(yīng)用程序外部的消息御蒲,如果設(shè)置true,則能夠接收诊赊,如果設(shè)置為false厚满,則不能夠接收。如果設(shè)置為false碧磅,這該接收只能接收那些由相同應(yīng)用程序組件或帶有相同用戶ID的應(yīng)用程序所發(fā)出的消息碘箍。
它的默認(rèn)值依賴它所包含的Intent過濾器。如果不包含過濾器鲸郊,則接收器只能由指定了明確類名的Intent對象來調(diào)用丰榴,這就意味著該接收器只能在應(yīng)用程序內(nèi)部使用(因為通常在應(yīng)用程序外部是不會知道這個類名的)。這種情況下默認(rèn)值就是false秆撮。另一方面四濒,如果接受器至少包含了一個過濾器,那么就意味著這個接收器能夠接收來自系統(tǒng)或其他應(yīng)用程序的Intent對象,因此默認(rèn)值是true峻黍。
這個屬性不是唯一的限制廣播接收外部調(diào)用的方法复隆,還能夠通過全限來限制能夠給它發(fā)送消息的外部實體。
- android:icon
這個屬性定義了一個代表廣播接收器的圖標(biāo)姆涩,這個屬性必須用包含圖片定義的可繪制資源來設(shè)定挽拂。如果沒有設(shè)置這個屬性,會是應(yīng)用
<application>
元素的icon
屬性值來代替骨饿。無論是這個屬性還是<application>
元素的icon
屬性亏栈,它們設(shè)置的圖標(biāo)也是所有的接收器的Intent過濾器的默認(rèn)圖標(biāo)。
- android:label
這個屬性給廣播接收器設(shè)定一個用戶可讀的懂的文本標(biāo)簽宏赘。如果這個屬性沒有設(shè)置绒北,那么就會使用
<application>
元素的label屬性值來代替。
無論是這個屬性還是<application>
元素的label
屬性察署,它們設(shè)置的標(biāo)簽也是所有的接收器的Intent過濾器的默認(rèn)標(biāo)簽闷游。
應(yīng)該使用一個字符串資源來設(shè)置這個屬性,以便它能夠像用戶界面中的其他字符串一樣能夠被本地化贴汪。但是脐往,為了應(yīng)用開發(fā)的便利,也能夠使用原生的字符串來設(shè)置扳埂。
- android:name
這個屬性值要用廣播接收器的實現(xiàn)類的類名來設(shè)置业簿,它是
BroadcastReceiver
類的一個子類。通常要使用類的全名來設(shè)置(如:com.example.project.ReportReceiver)阳懂。但是梅尤,也可以使用簡寫(如:.ReportReceiver)。系統(tǒng)會自動的把<manifest>
元素中的package屬性所設(shè)定的包名添加到這個簡寫的名稱上岩调。
一旦發(fā)布了應(yīng)用程序巷燥,就不應(yīng)該在改變這個名字了(除非android:exported=”false”)。
這個屬性沒有默認(rèn)值号枕,這個名字必須被指定矾湃。
- android:permission
這個屬性用于定義把消息發(fā)送給該廣播接收器的廣播器所必須要有的權(quán)限。如果沒有設(shè)置這個屬性堕澄,那么
<application>
元素的permission
屬性所設(shè)置的權(quán)限就適用于這個廣播接收器邀跃。如果<application>
元素也沒有設(shè)置權(quán)限,那么該接收器就不受權(quán)限的保護蛙紫。
- android:process
這個屬性用于設(shè)置該廣播接收器應(yīng)該運行在那個進程中的進程名拍屑。通常,應(yīng)用程序的所有組件都在給應(yīng)用程序創(chuàng)建的默認(rèn)進程中運行坑傅,它又與應(yīng)用程序包名相同的名稱僵驰。
<application>
元素的process
屬性能夠給它的所有組件設(shè)置一個不同的默認(rèn)進程,但是它的每個組件自己的process
屬性能夠覆蓋這個默認(rèn)設(shè)置,這樣就允許把一個應(yīng)用程序分離到多個進程中蒜茴。
如果這個屬性值用“:”開頭星爪,則在需要的時候系統(tǒng)會創(chuàng)建一個新的,應(yīng)用程序私有的進程粉私,并且該廣播接收器也會運行在這個進程中顽腾。如果這個屬性值用小寫字母開頭,那么接收器就會運行在以這個屬性值命名的全局進程中诺核,它提供使其工作的權(quán)限抄肖。這樣就允許不同的應(yīng)用程序組件來共享這個進程。
- android:priority
用于有序廣播
OrderedBroadcast
的接收者們將按照事先命的優(yōu)先級依次接收窖杀,數(shù)越大優(yōu)先級越高(取值范圍:-1000~10000)
BroadcastReceiver-廣播系列
《BroadcastReceiver-廣播(一)實現(xiàn)原理及注冊》
《BroadcastReceiver-廣播(二)靜態(tài)注冊屬性說明》
《BroadcastReceiver-廣播(三)發(fā)送及自定義廣播權(quán)限》
《BroadcastReceiver-廣播(四)五種類型》