簡體   English   中英

Android 2.3.6和4.x的NFC檢測有所不同

[英]NFC detection different for Android 2.3.6 and 4.x

我發現,當我將Nexus S (運行Android 2.3.6)放置在NFC標簽旁邊時,該標簽包含NDEF消息和指向網站的URI記錄,這將導致(如預期的那樣) NFC活動選擇器顯示為(因為我已安裝了多個NFC閱讀器應用程序,並且我正在使用自己的應用程序,該應用程序還攔截檢測到的NFC標簽)。

但是,使用Galaxy Nexus (Android v4,冰淇淋三明治)時,活動選擇器不會出現。 它只會直接啟動瀏覽器。 LogCat將顯示以下內容:

D/NfcService(438): TAG: Tech [android.nfc.tech.MifareUltralight, android.nfc.tech.NfcA, android.nfc.tech.Ndef]
I/ActivityManager(196): START {flg=0x10008000 cmp=com.android.nfc3/com.android.nfc.NfcRootActivity (has extras)} from pid 438
I/ActivityManager(196): START {act=android.nfc.action.NDEF_DISCOVERED dat=http://www.someURL.com/someotherstuff cmp=com.google.android.browser/com.android.browser.BrowserActivity (has extras)} from pid 438

所以這給了我兩個問題:

a)Android 2.3.6和4.x決定采取不同的行為,因為...?

b)即使我試圖限制我的應用程序只匹配包含www.someURL.com主機的NFC標簽,即

<data
    android:host="www.someURL.com"
    android:pathPattern="/*"
    android:scheme="http" />

放入我的3個意圖過濾器(一個用於TAG_DISCOVERED,一個用於TECH_DISCOVERED,一個用於NDEF_DISCOVERED,我真的試圖在這里吸引NFC活動選擇器的注意。),結果不會改變。 它將僅打開瀏覽器。 ATM唯一有效的方法是前台調度...

有任何想法嗎?

您的觀察是正確的:

a)Android 2.3.6和4.x決定采取不同的行為,因為...?

因為使用Android 4.0.x,已簡化了傳入NDEF消息的行為,以提高用戶體驗。 Android檢測幾種消息類型,並將數據直接傳遞到內置應用程序。

我很確定這是針對發送到瀏覽器的URI記錄和發送給聯系人應用程序的VCard消息完成的,但是也可能還有其他消息。

您可以通過啟用前台分派並使應用程序具有焦點運行來覆蓋此內置行為。

您可能應該使用“ android:pathPrefix”而不是“ android:pathPattern”。 您現在匹配0個或多個出現的“ /” ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM