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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android NFC标签写入网址,感应到标签访问网页

發(fā)布時間:2024/1/1 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android NFC标签写入网址,感应到标签访问网页 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先在AndroidManifest.xml文件中添加如下配置

<!-- SDK版本至少為14 --> <uses-sdk android:minSdkVersion="14"/> <!-- 添加NFC權(quán)限 --> <uses-permission android:name="android.permission.NFC" /> <!-- 要求當前設(shè)備必須要有NFC芯片 --> <uses-feature android:name="android.hardware.nfc" android:required="true" />

然后創(chuàng)建一個NFC寫標的類MainActivity

NFC主要相關(guān)類有NdefMessage、NdefRecord、Ndef、NdefFormatable,具體使用方法見如下代碼及注釋

package com.xindecoiot.nfcreadinfo;import android.app.PendingIntent; import android.content.Intent; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.nfc.Tag; import android.nfc.tech.Ndef; import android.nfc.tech.NdefFormatable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Toast;public class MainActivity extends AppCompatActivity {private NfcAdapter mNfcAdapter;private PendingIntent mPendingIntent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onStart() {super.onStart();mNfcAdapter = NfcAdapter.getDefaultAdapter(this);// 用于感應(yīng)到NFC時啟動該Activity// 這里建議將處理NFC的子類的launchMode設(shè)置成singleTop模式,這樣感應(yīng)到標簽時就會回調(diào)onNewIntent,而不會重復(fù)打開頁面mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0);}/*** 獲得焦點,按鈕可以點擊*/@Overridepublic void onResume() {super.onResume();// 設(shè)置當該頁面處于前臺時,NFC標簽會直接交給該頁面處理if (mNfcAdapter != null) {mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, null, null);}}/*** 暫停Activity,界面獲取焦點,按鈕可以點擊*/@Overridepublic void onPause() {super.onPause();// 當頁面不可見時,NFC標簽不交給當前頁面處理if (mNfcAdapter != null) {mNfcAdapter.disableForegroundDispatch(this);}}// 將Activity的launchMode設(shè)置成singleTop,這樣當感應(yīng)到NFC標簽時不會重復(fù)打開頁面,而是回調(diào)該方法@Overridepublic void onNewIntent(Intent intent) {Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);writeTag(detectedTag);}/*** 寫標* @param tag*/public void writeTag(Tag tag) {if (tag == null) {return;}// 根據(jù)網(wǎng)址創(chuàng)建待寫入的數(shù)據(jù)NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{NdefRecord.createUri(Uri.parse("https://www.himmy.cn"))});// 獲取內(nèi)容字節(jié)大小int size = ndefMessage.toByteArray().length;try {// 獲取NedfNdef ndef = Ndef.get(tag);// 不為空表示該標簽為Nedf格式if (ndef != null) {ndef.connect();// 是否可寫if (!ndef.isWritable()) {Toast.makeText(this, "標簽不支持寫入", Toast.LENGTH_SHORT).show();return;}// 判斷寫入內(nèi)容大小是否超出允許寫入的最大值if (ndef.getMaxSize() < size) {Toast.makeText(this, "寫入內(nèi)容過大", Toast.LENGTH_SHORT).show();return;}// 寫入數(shù)據(jù)ndef.writeNdefMessage(ndefMessage);Toast.makeText(this, "寫入成功", Toast.LENGTH_SHORT).show();} else { // 標簽非Nedf格式的情況NdefFormatable format = NdefFormatable.get(tag);// 不為空表示該標簽允許格式化成Ndef格式if (format != null) {format.connect();// 格式化并寫入Nedf內(nèi)容format.format(ndefMessage);Toast.makeText(this, "寫入成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "標簽不支持Nedf格式", Toast.LENGTH_SHORT).show();}}} catch (Exception e) {}} }

最后記得把MainActivity的啟動模式設(shè)置成singleTop

<activityandroid:name=".MainActivity"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter> </activity>

測試

  • 首先準備一臺支持NFC功能的手機,打開我們寫好的應(yīng)用
  • 準備一張NFC標簽,靠近手機NFC讀取區(qū)域(一般在背部)
  • 提示寫入成功后,關(guān)閉應(yīng)用
  • 再次將NFC標簽靠近手機,將會提示訪問我們寫入標簽的網(wǎng)頁,點擊確認就會打開瀏覽器訪問該網(wǎng)頁
  • ?

    總結(jié)

    以上是生活随笔為你收集整理的Android NFC标签写入网址,感应到标签访问网页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。