日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android9怎样适配nfc,android – 如何使用NFC动作

發布時間:2025/1/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android9怎样适配nfc,android – 如何使用NFC动作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我試圖以編程方式注冊接收器,以便在檢測到NFC標簽后收到通知.如我的代碼所示,我注冊了所需的操作,并以編程方式創建了廣播接收器.我還在清單文件中添加了所需的權限,但問題是從不調用onReceive.

請讓我知道我做錯了什么以及如何解決它.

IntentFilter intentFilter1 = new IntentFilter();

intentFilter1.addAction("android.nfc.action.TAG_DISCOVERED");

registerReceiver(mBCR_TAG_DISCOVERED, intentFilter1);

private BroadcastReceiver mBCR_TAG_DISCOVERED = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

mTv.setText("mBCR_TAG_DISCOVERED");

}

};

AndroidManifest.xml中:

package="example.com.myapplication">

android:name="android.hardware.nfc"

android:required="true" />

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

解決方法:

意圖android.nfc.action.TAG_DISCOVERED,就像所有NFC意圖一樣,是一種活動意圖,而不是廣播意圖.根本不可能為它注冊廣播接收器.您可以做的是注冊活動以接收NFC意圖.這可以通過清單,NFC前臺調度系統或Android 4.4通過NFC閱讀器模式API完成.

1.清單

根據標簽上的數據,您要么注冊NDEF_DISCOVERED意圖(如果標簽上有NDEF結構化數據),要么注冊TECH_DISCOVERED意圖(如果您只想監聽某些標簽技術而不管數據是什么)標簽).您通常不希望注冊TAG_DISCOVERED意圖過濾器,因為當通過AndroidManifest.xml使用時,這僅僅意味著作為回退機制(捕獲未被任何其他應用程序處理的事件).

例如.如果您的標記包含URL http://www.example.com/,則可以使用以下intent過濾器:

...

如果您的標記不包含任何特定數據且可能是任何標記技術,則可以使用以下intent過濾器:

...

android:resource="@xml/nfc_tech_filter" />

要使此intent過濾器起作用,您還需要在應用程序的res /目錄中使用XML資源xml / nfc_tech_filter.xml.如果技術過濾器應該只匹配任何標記,那么該文件將包含:

android.nfc.tech.NfcA

android.nfc.tech.NfcB

android.nfc.tech.NfcF

android.nfc.tech.NfcV

android.nfc.tech.NfcBarcode

注冊您的活動以接收這些事件后,您可以通過onCreate()(如果您的活動由NFC事件啟動)或通過onNewIntent()(如果您的活動在打開時收到后續NFC意圖)在您的活動中收到這些意圖):

@Override

public void onCreate(Bundle savedInstanceState) {

[...]

Intent startIntent = getIntent();

if ((startIntent != null) &&

(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(startIntent.getAction()) ||

NfcAdapter.ACTION_TECH_DISCOVERED.equals(startIntent.getAction()))) {

// TODO: process intent

}

}

@Override

protected void onNewIntent(Intent intent) {

if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) ||

NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {

// TODO: process intent

}

}

2.前景調度系統

如果您只對在前臺可見活動時接收NFC發現意圖感興趣,最好使用NFC前臺調度系統,而不是通過清單注冊接收NFC事件.您可以通過在onResume()期間注冊您的活動來完成此操作:

@Override

public void onResume() {

super.onResume();

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);

nfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);

}

您還必須確保在onPause()期間取消注冊:

@Override

public void onPause() {

super.onPause();

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);

nfcAdapter.disableForegroundDispatch(this);

}

然后,您將通過onNewIntent()以TAG_DISCOVERED意圖接收NFC事件:

@Override

public void onNewIntent(Intent intent) {

if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {

// TODO: process intent

}

}

3. Reader Mode API

如果您只對檢測NFC標簽感興趣,并且只有當您的活動在前臺可見且您只需要定位Android 4.4時,最好的方法可能是使用NFC閱讀器模式API.您可以通過在onStart()期間注冊您的活動來完成此操作:

@Override

public void onStart() {

super.onStart();

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);

nfcAdapter.enableReaderMode(this, new NfcAdapter.ReaderCallback() {

@Override

public void onTagDiscovered(Tag tag) {

// TODO: use NFC tag

}

}, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_NFC_B | NfcAdapter.FLAG_READER_NFC_F | NfcAdapter.FLAG_READER_NFC_V | NfcAdapter.FLAG_READER_NFC_BARCODE, null);

}

您還應確保在onStop()期間取消注冊:

@Override

public void onStop() {

super.onStop();

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);

nfcAdapter.disableReaderMode(this);

}

您通過onTagDiscovered(Tag標記)回調方法接收已發現的標記句柄.

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android9怎样适配nfc,android – 如何使用NFC动作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。