android源生Mms代碼結(jié)構(gòu)說(shuō)明_第1頁(yè)
android源生Mms代碼結(jié)構(gòu)說(shuō)明_第2頁(yè)
android源生Mms代碼結(jié)構(gòu)說(shuō)明_第3頁(yè)
android源生Mms代碼結(jié)構(gòu)說(shuō)明_第4頁(yè)
android源生Mms代碼結(jié)構(gòu)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、從軟件的功能角度來(lái)講,Mms分為對(duì)話列表,消息列表,短信編輯, 彩信編輯,短信顯示,彩信顯示和配置。從實(shí)現(xiàn)的角度來(lái)看,它分為GUI展示層,發(fā)送/接收,彩信解析,彩信 附件,信息數(shù)據(jù)等,這些分類對(duì)應(yīng)著源碼中的各種包。源碼導(dǎo)航Mms 的源碼的位置在于 android/packages/apps/Mms 其中Mms/src/com/android/mms里面都是Mms相關(guān)的代碼,而Mms/src/org/w3c/dom里面是一個(gè)類庫(kù),主要用于彩信格式的解析和顯 示。這里主要講一下Mms/src/com/android/mms下面的一些包和類的 主要用途。ui-GUI展示層,用于展示對(duì)話列表,消息列表

2、,消息編輯頁(yè),彩信附 件編輯,彩信展示,播放幻燈片。負(fù)責(zé)直接與用戶交互。ConversationListAdapter.java-對(duì)話列表的 Adapter 用于給顯示 層 ConversationList 綁定數(shù)據(jù)。ConversationListItemData.java-代表對(duì)話列表中的每一項(xiàng)的數(shù) 據(jù)結(jié)構(gòu),里面含有要在對(duì)話列表中展示的信息。ConversationList.java這是對(duì)話列表的顯示窗口 Activity,它是一個(gè)ListActivity,這幾個(gè)類都是對(duì)話列表的相關(guān)類,用于顯示, 編輯和管理所有的對(duì)話。 ComposeMessageActivity.java-這個(gè)是核心的

3、窗口 Activity,編輯信息,顯示一條對(duì)話Thread中的所有往來(lái)信息。MessageListView 會(huì)加在其上面,另外,AttachmentEditor 也會(huì) 加在其上面。這個(gè)Activity也負(fù)責(zé)響應(yīng)外部應(yīng)用程序,發(fā)送 SENDTO或SEND等請(qǐng)求Intent,比如外部應(yīng)用想要發(fā)送信息, 等就由這個(gè)Activity來(lái)響應(yīng)。MessageItem.java-代表一個(gè)信息的抽象數(shù)據(jù),它包含了信息相 關(guān)的所有內(nèi)容,比如信息的主題,消息內(nèi)容,來(lái)信地址,附件內(nèi) 容等等。它的所有數(shù)據(jù)都是公共的內(nèi)部成員,都可以直接訪問(wèn)。MessageListAdapter.java-用于給消息列表顯示層(由 Co

4、mposeMessageActivity 創(chuàng)建,綁定到 MessageListView 上) 綁定數(shù)據(jù)。MessageListView.java-用于顯示消息列表,繼承自 ListView, 其生命周期由ComposeMessageActivity來(lái)控制,顯示與否也由 它來(lái)控制。MessageListItem.java-是一個(gè)布局,用于顯示和控制消息列表 中的每一個(gè)消息的顯示。AttachmentTypeSelectorAdapter.java-用于添加附件件時(shí)的一個(gè)支持的附件列表,它就是一個(gè)菜單。AttachmentEditor.java-用于在編輯MMS彩信信息時(shí),顯示已 添加的附件,它的

5、生命周期由ComposeMessageActivity來(lái)控制, 顯示與否也是由ComposeMessageActivity來(lái)控制,當(dāng)有彩信附 件時(shí),它就會(huì)顯示,否則就被Hide。它是一個(gè)布局管理器,管理 著下面四個(gè)布局,根據(jù)附件的類型動(dòng)態(tài)的顯示下面四個(gè)View中 的某一個(gè)。AudioAttachmentView.java-在編輯信息器中用于顯示音頻附件, 它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件 中來(lái)當(dāng)成布局管理器使用。ImageAttachmentView.java-在編輯信息器中用于顯示圖片附 件,它是繼承自線性布局。并不在代碼中直接使用,而是在布局 文件中來(lái)當(dāng)成布局管理器

6、使用。SlideshowAttachmentView.java-在編輯信息器中用于顯示幻燈 片附件,它是繼承自線性布局。并不在代碼中直接使用,而是在 布局文件中來(lái)當(dāng)成布局管理器使用。VideoAttachmentView.java-在編輯信息器中用于顯示視頻附件, 它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件 中來(lái)當(dāng)成布局管理器使用。SlideshowActivity.java用來(lái)全屏播放幻燈片,也即幻燈片的展 示,因?yàn)椴市诺膭?chuàng)建和播放都是以幻燈片的方式進(jìn)行的,也即一 張一張的,每張上面可以文字,圖片,視頻和音頻,每一張有瀏 覽時(shí)長(zhǎng)。SlideshowEditActivity.ja

7、va-以列表方式管理幻燈片,也即是把所 有的幻燈片用列表顯示出來(lái),用戶可添加一頁(yè)幻燈片,也可以點(diǎn) 擊進(jìn)入編輯某頁(yè)幻燈片,用于創(chuàng)建和編輯幻燈片。SlideshowEditor.java-用于編輯某頁(yè)幻燈片,比如添加元素,刪 除元素和替換元素,這里的元素可以是圖片,視頻,音頻和文字。也可以用于編輯整頁(yè)幻燈片,比如刪除某頁(yè)幻燈片,調(diào)整這頁(yè)幻 燈片在所有幻燈片中的位置等。它是一個(gè)具體操作幻燈片的封裝, SlideEditorActivity創(chuàng)建它并使用它來(lái)完成紀(jì)燈片的編輯。SlideshowPresenter.java-用于展示所有的幻燈片,也就是播放 所有的幻燈片。由SlideshowActivit

8、y來(lái)創(chuàng)建和使用。SlideViewInterface.java-定義了一些用于顯示一頁(yè)幻燈片中的 內(nèi)容的接口,如設(shè)置圖像,設(shè)置視頻,設(shè)置音頻,播放視頻,播 放音頻,暫停,隨機(jī)定位等等。附件顯示的View:AudioAttachmentView, ImageAttachmentView,SlideshowAttachmentView 和 VideoAttachmentView 均實(shí)現(xiàn)了此 接口,這樣AttachmentEditor就可以用統(tǒng)一的接口來(lái)控制內(nèi)容的 播放,而不用關(guān)心具體的內(nèi)容是什么。SlideEditorActivity.java-用于編輯某頁(yè)幻燈片,比如添加音頻,添加視頻,添加圖像

9、,添加文字等。它只是提供用戶界面,讓用 戶來(lái)操作各種按扭以達(dá)到添加元素,替換元素或是刪除元素。而 對(duì)具體的幻燈片的操作是通過(guò)SlideshowEditor來(lái)完成的,它主 要負(fù)責(zé)與用戶交互。SlideListltemView.java- SlideshowEditActivity 中列表的每一項(xiàng) 的布局管理,繼承自LinearLayout。MmsThumbnailPresenter.java-用于在消息列表中,顯示彩信的 縮略圖,因?yàn)椴市诺膬?nèi)容不固定,可能是圖片,可能是音頻,可 能是視頻也可能是幻燈片,所以用這個(gè)類來(lái)處理并顯示彩信的縮 略圖。MessagingPreferenceActivity

10、.java-Mms 的配置信息編輯器,用 來(lái)編輯和更改配置信息,繼承息PreferenceActivity。它負(fù)責(zé)與用 戶交互,顯示和更改配置。在Mms啟動(dòng)時(shí),MmsConfig會(huì)從 SharedPreference中讀出配置信息,在運(yùn)行時(shí)其他的類的配置信 息都是從MmsConfig中獲取的,MmsConfig提供了很多Get方 法以獲取配置信息。Presenter.java-用來(lái)展示附件的一個(gè)抽象類。PresenterFactory.java-工廠方法。RecipientsAdapter.java RecipientsEditor.java-用于顯示信息編輯頁(yè)面上面的收信人的編輯框,它可以有

11、自動(dòng)補(bǔ)全的功能,補(bǔ)全的數(shù)據(jù)由RecipientsAdapter 來(lái)提供。Viewlnterface.java-代表一個(gè) View 的基類,用于 Slideshow 顯 示內(nèi)容或是取縮略圖??梢匀iew的長(zhǎng)寬高等。BasicSIideEditorView.java-編輯某一頁(yè)幻燈片時(shí)所用的布局,也 就是在 SlideEditorActivity.java 中使用。EditSlideDurationActivity.java-顧名思義,用于編輯某一頁(yè)幻燈 片的瀏覽時(shí)長(zhǎng)。ManageSimMessages.java-這個(gè)是在設(shè)置中使用的,用來(lái)管理SIM里的消息。在設(shè)置中有一項(xiàng)是管理SIM卡上面的消

12、息。在 Mms的設(shè)置Settings中有一個(gè)選項(xiàng)可以設(shè)置是把信息存儲(chǔ)在SIM 卡,還是存儲(chǔ)在手機(jī)里。在收信時(shí)SmsReceiverService會(huì)查看 這個(gè)設(shè)置然后把收到的信息寫到相應(yīng)的地址。ManageSimMessages也是以列表方式顯示SIM里面的信息,提 供了二個(gè)菜單:把信息存入手機(jī)和刪除。NumberPickerButton.java-用于顯示選擇數(shù)字的按扭,在配置里 面用。NumberPickerDialog.java-用于顯示選擇數(shù)字的對(duì)話框,在配置 里面用。NumberPicker.java-用于在配置的時(shí)候選擇數(shù)字。這幾個(gè) NumerPicker主要是用于Settings中

13、的。DeliveryReportActivity.java-信息發(fā)送情況報(bào)告。以列表的方式來(lái)顯示DeliveryReportAdapter.java-相應(yīng)的 AdapterDeliveryReportltem.java-相應(yīng)的數(shù)據(jù),每一項(xiàng)的數(shù)據(jù)DeliveryReportListltem.java-相應(yīng)每一項(xiàng)的布局。data用于操作當(dāng)前正在編輯的信息的相關(guān)數(shù)據(jù),比如聯(lián)系人列表,比 如當(dāng)前對(duì)話,比如當(dāng)前消息。負(fù)責(zé)管理當(dāng)前正在編輯的信息和當(dāng)前所處 的對(duì)話以及當(dāng)前信息用到的聯(lián)系人。這些類都是在編輯信息的時(shí)候使用, 由于這些多半都是用來(lái)管理數(shù)據(jù)的,而又無(wú)法直接做為對(duì)象傳遞給編輯 器。所以它們的很多方法

14、都是靜態(tài)的,也就是這些類都近似單鍵。WorkingMessage.java-用來(lái)管理當(dāng)前正在編輯的消息,它從創(chuàng) 建,草稿到發(fā)送完成后一直存在,只要打開了編輯信息的頁(yè)面就 會(huì)創(chuàng)建一個(gè)WorkingMessage,直到退出編輯頁(yè)面。Conversation.java-用來(lái)管理對(duì)話Threads,通常用來(lái)管理當(dāng)前 的對(duì)話,也就是進(jìn)入的對(duì)話和正在進(jìn)行操作的對(duì)話,它也用來(lái)管 理對(duì)話列表,比如查詢對(duì)話列表。Contact.java-用來(lái)代表一個(gè)聯(lián)系人的信息,和管理聯(lián)系人,加載 聯(lián)系人信息,其中還有相應(yīng)的Cache。因?yàn)橐粋€(gè)聯(lián)系人的數(shù)據(jù)是 比較多的包含名字,名,姓,各種電話號(hào)碼,各種地址等等。因 為Mms中

15、直接使用Contact來(lái)作為聯(lián)系人,所有信息都是直接 從其中獲取。另外,由于信息交互中也會(huì)涉及到聯(lián)系人,因?yàn)槭?發(fā)信時(shí)可以直接使用一串電話號(hào)碼,這時(shí)就需要有如添加聯(lián)系人 的功能。Contact中有很多異步的操作,比如加載聯(lián)系人信息的 時(shí)候或者更新Cache的時(shí)候都需要異步操作以不阻塞調(diào)用者。ContactList.java-是一個(gè) Contact 的 List 列表它繼承自 ArrayList。用來(lái)管理一個(gè)Contact列表,或管理多個(gè)Contact。因?yàn)槊總€(gè)信息可以發(fā)送給多個(gè)聯(lián)系人,這時(shí)就需要用到 ContactList來(lái)管理這些收信人。也提供了一些方便存儲(chǔ)和傳遞Contact的方法,比如把

16、多個(gè)Contact轉(zhuǎn)成String,或者轉(zhuǎn)成String 數(shù)組等。RecipientldCache.java-用于保存所用到的Contact的Id和地址(電話)。每次WorkingMessage會(huì)更新這個(gè)Cache,然后ContactList會(huì)優(yōu)先從這個(gè)Cache中查詢聯(lián)絡(luò)人。dom-用于解析彩信內(nèi)容smil的工具包drm-用于處理DRM的媒體文件的工具包layout-為了滿足特殊需要而改寫的布局元素model-這里面定義了彩信支持的附件數(shù)據(jù)結(jié)構(gòu)和附件的組織方式。彩 信可包含的內(nèi)容有圖片,視頻,音頻和文字。這些內(nèi)容可以單獨(dú)存在, 也可以組合在一起。如果組合在一起就變成了幻燈片。用戶可以用幻燈

17、片的方式來(lái)創(chuàng)建含有多個(gè)媒體的附件,圖文并茂的展示。每張幻燈片上 面可以加視頻,音頻,圖片和文字,但通常一張幻燈片上面只允許加一 個(gè)圖片或視頻,文字是都可以添加的,音頻在沒(méi)有視頻的情況下只可以 添加的。播放的時(shí)候可以設(shè)置每張幻燈片的播放時(shí)長(zhǎng),以及文字的滾動(dòng)CarrierContentRestriction.java-是具體的彩信附件檢查站,對(duì)于 不支持的附件,或者附件大小超出限制,或者圖像分辨率不對(duì), 或者圖像超出尺寸,會(huì)拋出異常:UnsupportedContentTypeException, ResolutionException, ExceedMessageSizeException, C

18、ontentRestrictionException。ContentRestriction.java是用于檢查附件的接口,外部直接使用這 相接口,而具體實(shí)現(xiàn)是 CarrierContentRestrictionContentRestrictionFactory.java是創(chuàng)建附件檢查的工廠方法。外 部通過(guò)這個(gè)工廠來(lái)創(chuàng)建一個(gè)ContentRestriction對(duì)象,然后使用 其中定義的檢查方法來(lái)進(jìn)行附件內(nèi)部檢查。SmilHelper.java用于解析和處理附件中的Smil的工具類。IModelChangedObserver.java接口,用于監(jiān)聽附件內(nèi)容有變化。Model.java-彩信附件的數(shù)

19、據(jù)組織方式和管理方式是每一個(gè)附件 都是一個(gè)Model的子類,它不但用于管理附件的具體數(shù)據(jù),比如 Uri,大小,文件名,位置等,也可以用于在GUI顯示附件和查看 附件。LayoutModel.java-繼承自Model用于管理可視的附件的布局的類。它用來(lái)管理RegionModel等的基本元素。它就好比ViewGroup 或 LinearLayout, RelativeLayout 等一些布局管理器,用來(lái)組織并管理布局基本元素也就是RegionModel的子類ImageModel, TextModel 和 VideoModel。RegionModel.java-繼承自Model用于管理可視附件和布

20、局,比 女口圖像,視頻和文字。特別是在顯示可視附件的時(shí)候,用于控制 可視附件在屏幕中的位置。一個(gè)RegionModel代表著一張幻燈片 上的一塊區(qū)域,它是幻燈片上的布局基本元素。好比UI元素中的 View,但多在使用時(shí)都是使用它的子類,也就是ImageModel, TextModel 和 VideoModeloRegionMediaModel.java-繼承自 MediaModel,是用于多媒體附 件中的可視部分的布局控制,主要用在附件的顯示和播放幻燈片 時(shí)的控制。它的子類是 ImageModel, TextModel 和 VideoModel。MediaModel.java-繼承自Model

21、,代表媒體的數(shù)據(jù)結(jié)構(gòu),管理具 體的附件數(shù)據(jù),同時(shí)也用于管理附件的顯示控制,比如圖像的顯 示,音頻和視頻的播放控制等。MediaModelFactory.java-用于從一個(gè)Pdu附件中解析出來(lái) MediaModel,也就是把Pdu轉(zhuǎn)化為Mms內(nèi)部的附件數(shù)據(jù)。ImageModel.java繼承自 RegionMediaModel 用于管理圖像附 件和控制圖像附件的顯示。VideoModel.java-繼承自 RegionMediaModel 用于管理視頻附 件和控制視頻附件的播放。AudioModel.java-繼承自MediaModel用于管理音頻附件和控制音頻附件的播放 SlideModel

22、.java-繼承自Model用于管理一組附件,這些附件同一次顯示給用戶。就好像幻燈片的一片一樣,每一個(gè)SlideModel 里面有一個(gè)可以存儲(chǔ)Model的列表,可以包含文字,音頻,圖像 或視頻,其上面的附件同時(shí)顯示出來(lái)。SlideshowModel.java-繼承自Model,用于管理一個(gè)彩信中的所 有附件。其內(nèi)含有一個(gè)存儲(chǔ)SlideModel的列表,用于保存和控制 一條彩信中的所有附件。另外它也負(fù)責(zé)顯示這些附件,把一個(gè)個(gè) SlideModel組織起來(lái),播放。它也負(fù)責(zé)著把這些Mms形式的附 件(各種Model)轉(zhuǎn)化為Android的附件Pdu,和從Pdu提出各 自Model,因?yàn)镾lidesh

23、ow是應(yīng)用程序?qū)拥牟市盘幚矸绞?,而?發(fā)送和接收的彩信數(shù)據(jù)是Pdu。TextModel.java-繼承自 RegionMediaModel 用于管理文字附件和控制文字附件的顯示,比如按時(shí)間來(lái)滾動(dòng)uti這里面是整個(gè)Mms共享的工具類,其中全部都是單鍵或是直接使 用類,不可以創(chuàng)建對(duì)象和以對(duì)象方式來(lái)使用AddressUtils.java-關(guān)于地址的工具類,目前只有一個(gè)getFrom() 方法,用于獲取發(fā)信人地址。DraftCache.java-用于標(biāo)識(shí)哪些對(duì)話Thread有Draft,哪些沒(méi)有, 也就是用于管理和查詢對(duì)話的草稿狀態(tài),有草稿還是沒(méi)有。它里 面維護(hù)了一個(gè)HashSet,里面包含了所有含有

24、草稿的Thread Id。它里面也有一個(gè) HashSet 用于存儲(chǔ) OnDraftChangedListener, 即當(dāng)Thread的Draft狀態(tài)有變化時(shí),DraftCache會(huì)調(diào)用相應(yīng)的 Listener以告知相應(yīng)模塊,這個(gè)對(duì)話的草稿狀態(tài)有所變化??梢?通過(guò) DraftCache.setDraftState(threadld, state)來(lái)設(shè)置某個(gè)對(duì)話 的草稿狀態(tài);可以通過(guò)DraftCache.hasDraft(threadld)來(lái)查詢某 個(gè)對(duì)話是否含有草稿。Recycler.java-是一個(gè)抽象的工具類,里面定義了 SmsRecycler 和MmsRecycler,用于刪除陳舊的消息,

25、或者刪除超過(guò)信息數(shù)量 限制的信息。使用方法都是Recycler.getSmsRecycler.deleteOldMessages(context)或者Recycler.getMmsRecycler.deleteOldMessages(context)SmileyParser.java-把標(biāo)點(diǎn)式的表情符號(hào)轉(zhuǎn)化為圖形的表情,比 如把9用圖標(biāo)笑臉來(lái)代替。DownloadManager.java-不要被名字騙到,它并不是真正意義上 的下載管理器,因?yàn)樗⒉回?fù)責(zé)任何與下載文件過(guò)程或下載文件 的管理。它是用于管理與下載相關(guān)的配置信息,比如是否是自動(dòng) 下載,以及下載過(guò)程的各種通知,比如Notificatio

26、n Bar和Toast 提示等。RateController.javaSendingProgressTokenManager.javatransaction-對(duì)于Mms來(lái)講是最底層的一個(gè)包,用戶不可見,它負(fù)責(zé) 發(fā)信息的最后處理和收信息的最初處理。主要是負(fù)責(zé)發(fā)送信息和接收信 息。它并不是真正的發(fā)送和接收信息。是由系統(tǒng)Frameworks里面來(lái)負(fù)責(zé)接收和發(fā)送信息。這個(gè)包只是對(duì)于Mms應(yīng)用層來(lái)講是發(fā)送和接收。AbstractRetryScheme.javaDefaultRetryScheme.java這二個(gè)類是實(shí)現(xiàn)一種 Retry 機(jī)制,因 為信息的發(fā)送與接收會(huì)受到環(huán)境的限制,比如現(xiàn)在手機(jī)沒(méi)信號(hào),

27、或是網(wǎng)絡(luò)連接不成功,那么就會(huì)把信息放到Pending隊(duì)列里面, 等一段時(shí)間再重新嘗試發(fā)送與接收。這里的二個(gè)類就是為了實(shí)現(xiàn) 此Retry機(jī)制。HttpUtils.java彩信發(fā)送與接收的最底層實(shí)現(xiàn)者,它負(fù)責(zé)用 HTTP協(xié)議接收和發(fā)送彩信到MMSC彩信服務(wù)中心。MessageSender.java像其名字所預(yù)示的那樣,它是為了發(fā)送信 息而封裝的一個(gè)接口,它里面只有一個(gè)方法sendMessage(), UI 層只需要調(diào)用實(shí)現(xiàn)了這個(gè)接口的類即可發(fā)送信息。MessagingNotification.java專門負(fù)責(zé)在 Status Bar 上面做Notification,比如新接收到了信息,或是信息發(fā)送

28、失敗,或是接 收失敗等。它被UI層,和底邏輯層共用著。MmsMessageSender.java繼承自 MessageSender,專門用于 發(fā)送彩信。它并不是做發(fā)送的事情,而是做一些錯(cuò)誤檢查和前期 準(zhǔn)備工作,然后啟動(dòng)Transactionservice來(lái)做發(fā)送相關(guān)的事情。NotificationTransaction.java繼承自 Transaction,負(fù)責(zé)接收彩 信和更新通知(Notification)。當(dāng)有一個(gè)新彩信時(shí),F(xiàn)rameworks會(huì) 先發(fā)出一個(gè)短信,稱作彩信通知(Notificationindication),其內(nèi)含 有彩信相關(guān)的信息(MMSC,彩信的ContentLoca

29、tion(URL)等), 之后是由應(yīng)用程序自己去MMSC用ContentLocation取彩信。這 個(gè)NotificationTransaction就是專門用于處理彩信通知的,它會(huì)從MMSC上取出彩信數(shù)據(jù)(Pdu),把它寫入數(shù)據(jù)庫(kù)中,然后更 新Notification。需要注意的是,只有彩信的設(shè)置是自動(dòng)獲取(“auto retrieve”)時(shí),它才會(huì)去下載彩信,否則,它只處理彩信通知(Notification Indication),而不去下載彩信。Observable.java里面定義了觀察對(duì)象,Transaction是它的一 個(gè)子類,其他的實(shí)體Transaction都是觀察對(duì)象,里面有一個(gè)

30、列 表保存著觀察者的引用,當(dāng)一個(gè)Transaction完成時(shí),或是有異 常時(shí)就會(huì)調(diào)用notifyObservers()方法來(lái)把狀態(tài)通知給觀察者。Observer.java觀察者,TransactionService 實(shí)現(xiàn)了這個(gè)接口。 它是所有Transaction的觀察者,以監(jiān)聽他們的狀態(tài)和處理結(jié)果, 因?yàn)樗械腡ransaction都是異步的,所以才用觀察模式來(lái)通知 Transaction的處理結(jié)果。PrivilegedSmsReceiver.java繼承自 SmsReceiver 短信收信的 事件監(jiān)聽者,負(fù)責(zé)監(jiān)聽新短信事件vider.Telephony.lntents.SMS_RECEIV

31、ED_ACTION(“vider.Telephony.SMS_RECEIVED”);當(dāng)接收到這個(gè) Intent時(shí)表明有一個(gè)新短信。它會(huì)喚起SmsReceiverServier來(lái)處 理短信。ProgressCallbackEntity.java PushReceiver.java個(gè) BroadcastReceiver 專門用于接收彩信事件vider.Telephony.WAP_PUSH_RECEIVED_ACTION(“vider.Telephony.WAP_PUSH_RECEIVED”),它會(huì)先做一些預(yù)處理,然后啟動(dòng)Transactionservice,Transactionservice 又

32、會(huì)創(chuàng)建 NotificationTransaction 來(lái)處理這個(gè)彩信通知。ReadRecTransaction.javaRetrieveTransaction.java繼承自 Transaction,用于主動(dòng)獲取彩信數(shù)據(jù)。當(dāng)彩信設(shè)置為非自動(dòng)獲取時(shí),需要用戶觸發(fā)獲取,TransactionService 會(huì)創(chuàng)建一個(gè) RetrieveTransaction 來(lái)獲取彩信數(shù)據(jù)(Pdu),存入數(shù)據(jù)庫(kù),更新Notification等。RetryScheduler.javaSendTransaction.java繼承自 Transaction,用于發(fā)送彩信數(shù)據(jù)。SimFullReceiver.javaSm

33、sMessageSender.java發(fā)送短信的封裝,繼承自MessageSender。它會(huì)啟動(dòng) SmsReceiverService 來(lái)發(fā)送。SmsReceiver.java是一個(gè) BroadcastReceiver,不要被其名字唬到,它并不負(fù)責(zé)接收新短信通知,相反,它用于發(fā)送信息,接收發(fā)送信息請(qǐng)求,并喚起SmsReceiverService來(lái)處理發(fā)送。這里可能是Android命名規(guī)則的原因,Android里的四大組件都喜歡把其組件的名字加上,比如ComposeMessageActivity,是一個(gè) Activity,TransactionService 是一個(gè) Service,而這里SmsReceiver 是一個(gè) BroadcastReceiver,它與接收短信(receiving Sms )沒(méi)有關(guān)系。當(dāng)然了,這完全是一個(gè)糟糕的命名。SmsReceiverService.java它是一個(gè) Service,專門用于處理短 信的發(fā)送與接收。它是由SmsReceiver和PrivilegedSmsReceiver監(jiān)聽事件,然后啟動(dòng)它的,自己并不會(huì)監(jiān) 聽I(yíng)ntent事件。SmsRejectedReceiver.javaSmsSingleRecipientSender.java繼承自 SmsMe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論