iT邦幫忙

0

如何在flutter 關掉原廠的NFC tag?

我有一個用flutter的簽到APP,利用NFC拍卡簽到。
我的APP有兩個tag的頁面,一個是NFC拍卡的頁面,另一個是上載資料的頁面。

第一個問題,剛進入NFC的頁面,在拍卡是正常沒問題。但我轉到上載頁面後試去拍卡,被原廠的NFC感應到後跳出APP,并顯示讀取的資料。
第二個問題,當我先轉到上載頁面,在轉點NFC的頁面後,在拍卡簽到但會被原廠的NFC功能取替了我APP的功能。

所以我想請問大家,有方法解決這個情況嗎?
感謝。

1 個回答

1
wrxue
iT邦新手 2 級 ‧ 2020-08-09 10:42:42
最佳解答

我沒用過flutter,但以我用Android Studio寫NFC應用的經驗來看

  • 問題1.
    • NFC的頁面:有foreground dispatch
    • 上載資料的頁面:沒有foreground dispatch,所以才被轉走,轉去預設的原廠App。
    • 個人想法:應該用foreground dispatch抓到intent,而不是想怎麼去關掉其它App的功能。
  • 問題2.
    • NFC的頁面原先有foreground dispatch,但在onPause時應該會先暫時關閉foreground dispatch,但跳回來時應該沒有再啟動foreground dispatch,所以會與『上載資料的頁面』感應時的動作一樣,被其它App取代。
    • 個人想法:onResume時再啟動foreground dispatch試試。

感謝,給了我方向。flutter 可以去call Java的method,
所以可以從你的想方去處理。

今天找了一天也不太知道怎樣用 foreground dispatch,

大大能幫忙講解一下怎用嗎

wrxue iT邦新手 2 級 ‧ 2020-08-10 08:43:18 檢舉

https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc#foreground-dispatch
裡面說的蠻清楚的,下面大概說一下它的步驟

  1. PendingIntent @ onCreate
  2. IntentFilter @ onCreate
  3. enableForegroundDispatch @ onResume
  4. disableForegroundDispatch @ onPause
  5. intent.get @ onNewIntent // 感應到之後要處理的流程寫在onNewIntent

我要發表回答

立即登入回答