Android近場通訊---NFC基礎(二)(轉)

轉自 http://blog.csdn.net/think_soft/article/details/8171256android

 

應用程序如何調度NFC標籤ui

當標籤調度系統完成對NFC標籤和它的標識信息封裝的Intent對象的建立時,它會把該Intent對象發送給感興趣的應用程序。若是有多個應用程序可以處理該Intent對象,就會顯示Activity選擇器,讓用戶選擇Activity。標籤調度系統定義了三種Intent對象,如下按照由高到低的優先級列出這三種Intent對象:spa

1.  ACTION_NDEF_DISCOVERED:這種Intent用於啓動包含NDEF負載和已知類型的標籤的Activity。這是最高優先級的Intent,而且標籤調度系統在任何其餘Intent以前,都會盡量的嘗試使用這種類型的Intent來啓動Activity。.net

2.  ACTION_TECH_DISCOVERED:若是沒有註冊處理ACTION_NDEF_DISCOVERED類型的Intent的Activity,那麼標籤調度系統會嘗試使用這種類型的Intent來啓動應用程序。若是被掃描到的標籤包含了不能被映射到MIME類型或URI的NDEF數據,或者沒有包含NDEF數據,可是是已知的標籤技術,那麼也會直接啓動這種類型的Intent對象(而不是先啓動ACTION_NDEF_DISCOVERED類型的Intent)xml

3.  ACTION_TAB_DISCOVERED:若是沒有處理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED類型Intent的Activity,就會啓動這種類型的Intent。對象

 

標籤調度系統的基本工做方法以下:blog

1.  用解析NFC標籤時由標籤調度系統建立的Intent對象(ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)來嘗試啓動Activity;get

2.  若是沒有對應的處理Intent的Activity,那麼就會嘗試使用下一個優先級的Intent(ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)來啓動Activity,直到有對應的應用程序來處理這個Intent,或者是直到標籤調度系統嘗試了全部可能的Intent。it

3.  若是沒有應用程序來處理任何類型的Intent,那麼就不作任何事情。io

圖1.標籤調度系統

在可能的狀況下,都會使用NDEF消息和ACTION_NDEF_DISCOVERED類型的Intent來工做,由於它是這三種Intent中最標準的。這種Intent與其餘兩種Intent相比,它會容許你在更加合適的時機來啓動你的應用程序,從而給用戶帶來更好的體驗。

 

在Android的Manifest中申請NFC訪問

在訪問設備的NFC硬件和正確的處理NFC的Intent以前,要在AndroidManifest.xml文件中進行如下聲明:

1.  在<uses-permission>元素中聲明訪問NFC硬件:

<uses-permission android:name="android.permission.NFC" />

2.  你的應用程序所支持的最小的SDK版本。API Level 9只經過ACTION_TAG_DISCOVERED來支持有限的標籤調度,而且只能經過EXTRA_NDEF_MESSAGES來訪問NDEF消息。沒有其餘的標籤屬性或I/O操做可用。API Level 10中包含了普遍的讀寫支持,從而更好的推進了NDEF的應用前景,而且API Leve 14用Android Beam和額外的方便的建立NDEF記錄的方法,向外提供了更容易的把NDEF消息推送給其餘設備的方法。

<uses-sdkandroid:minSdkVersion="10"/>

3.  使用uses-feature元素,在Google Play中,以便你的應用程序可以只針對有NFC硬件的設備來顯示。

<uses-featureandroid:name="android.hardware.nfc"android:required="true"/>

若是你的應用程序使用了NFC功能,可是相關的功能又不是你的應用程序的關鍵功能,你能夠忽略uses-feature元素,而且要在運行時經過調用getDefaultAdapter()方法來檢查NFC是否有效。

相關文章
相關標籤/搜索