android中NFC读写功能的实现方法是怎样的
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关android中NFC读写功能的实现方法是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先检查一下设备是否支持NF
千家信息网最后更新 2026年11月03日android中NFC读写功能的实现方法是怎样的
今天就跟大家聊聊有关android中NFC读写功能的实现方法是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
首先检查一下设备是否支持NFC功能
private void checkNFCFunction() { // TODO Auto-generated method stub mNfcAdapter = NfcAdapter.getDefaultAdapter(this); // check the NFC adapter first if (mNfcAdapter == null) { // mTextView.setText("NFC apdater is not available"); Dialog dialog = null; AlertDialog.Builder customBuilder = new AlertDialog.Builder( this); customBuilder .setTitle("很遗憾") .setMessage("没发现NFC设备,请确认您的设备支持NFC功能!") .setIcon(R.drawable.ic_banner) .setPositiveButton("是", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }); dialog = customBuilder.create(); dialog.setCancelable(false);// back dialog.setCanceledOnTouchOutside(false); SetDialogWidth(dialog).show(); return; } else { if (!mNfcAdapter.isEnabled()) { Dialog dialog = null; AlertDialog.Builder customBuilder = new AlertDialog.Builder( this); customBuilder .setTitle("提示") .setMessage("请确认NFC功能是否开启!") .setIcon(R.drawable.ic_banner) .setPositiveButton("现在去开启......", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent setnfc = new Intent( Settings.ACTION_NFC_SETTINGS); startActivity(setnfc); } }); dialog = customBuilder.create(); dialog.setCancelable(false);// back dialog.setCanceledOnTouchOutside(false); SetDialogWidth(dialog).show(); return; } } }读取NFC信息
package com.xxzhy.shujucaiji.fengxiang;import android.app.Dialog;import android.app.PendingIntent;import android.content.DialogInterface;import android.content.Intent;import android.content.IntentFilter;import android.nfc.FormatException;import android.nfc.NdefMessage;import android.nfc.NdefRecord;import android.nfc.NfcAdapter;import android.nfc.Tag;import android.nfc.tech.MifareClassic;import android.nfc.tech.Ndef;import android.nfc.tech.NfcA;import android.nfc.tech.NfcB;import android.nfc.tech.NfcF;import android.nfc.tech.NfcV;import android.os.Bundle;import android.provider.Settings;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.util.DisplayMetrics;import android.util.Log;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import com.xxzhy.shujucaiji.R;import com.xxzhy.shujucaiji.utils.ByteArrayChange;import com.xxzhy.shujucaiji.utils.ToStringHex;import com.xxzhy.shujucaiji.utils.ToastUtil;import com.xxzhy.shujucaiji.utils.WebServiceClient;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import butterknife.BindView;import butterknife.ButterKnife;/** * Created by apple on 2017/10/30. */public class FengxiangThreeActivity extends AppCompatActivity { @BindView(R.id.tv_bianma) TextView tvBianma; @BindView(R.id.ll_input) LinearLayout llInput; @BindView(R.id.noteText) TextView noteText; @BindView(R.id.writeBtn) Button writeBtn; String[][] mTechLists; private Boolean ifWrite; private NfcAdapter mNfcAdapter; private PendingIntent mPendingIntent; private IntentFilter[] mFilters; byte[] code = MifareClassic.KEY_DEFAULT;//读写标签中每个块的密码 private byte[] b0; int block[] = {4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20, 21, 22, 24, 25, 26, 28, 29, 30, 32, 33, 34, 36, 37, 38, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 62}; private String samCode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fengxiang_three); ButterKnife.bind(this); writeBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ifWrite = true; } }); samCode = getIntent().getStringExtra("samCode"); tvBianma.setText(samCode); checkNFCFunction(); // NFC Check mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // Setup an intent filter for all MIME based dispatches IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); try { ndef.addDataType("*/*"); } catch (IntentFilter.MalformedMimeTypeException e) { throw new RuntimeException("fail", e); } mFilters = new IntentFilter[]{ndef,}; // 根据标签类型设置 mTechLists = new String[][]{new String[]{NfcA.class.getName()}}; } private void checkNFCFunction() { // TODO Auto-generated method stub mNfcAdapter = NfcAdapter.getDefaultAdapter(this); // check the NFC adapter first if (mNfcAdapter == null) { // mTextView.setText("NFC apdater is not available"); Dialog dialog = null; AlertDialog.Builder customBuilder = new AlertDialog.Builder( this); customBuilder .setTitle("很遗憾") .setMessage("没发现NFC设备,请确认您的设备支持NFC功能!") .setIcon(R.drawable.ic_banner) .setPositiveButton("是", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); finish(); } }); dialog = customBuilder.create(); dialog.setCancelable(false);// back dialog.setCanceledOnTouchOutside(false); SetDialogWidth(dialog).show(); return; } else { if (!mNfcAdapter.isEnabled()) { Dialog dialog = null; AlertDialog.Builder customBuilder = new AlertDialog.Builder( this); customBuilder .setTitle("提示") .setMessage("请确认NFC功能是否开启!") .setIcon(R.drawable.ic_banner) .setPositiveButton("现在去开启......", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent setnfc = new Intent( Settings.ACTION_NFC_SETTINGS); startActivity(setnfc); } }); dialog = customBuilder.create(); dialog.setCancelable(false);// back dialog.setCanceledOnTouchOutside(false); SetDialogWidth(dialog).show(); return; } } } private Dialog SetDialogWidth(Dialog dialog) { // TODO 自动生成的方法存根 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); if (screenWidth > screenHeight) { params.width = (int) (((float) screenHeight) * 0.875); } else { params.width = (int) (((float) screenWidth) * 0.875); } dialog.getWindow().setAttributes(params); return dialog; } @Override protected void onNewIntent(Intent intent) { // TODO 自动生成的方法存根 super.onNewIntent(intent);// tv1.setText("发现新的 Tag: " + ++mCount + "\n");// mCount 计数 String intentActionStr = intent.getAction();// 获取到本次启动的action if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intentActionStr)// NDEF类型 || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intentActionStr)// 其他类型 || NfcAdapter.ACTION_TAG_DISCOVERED.equals(intentActionStr)) {// 未知类型 // 在intent中读取Tag id Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); byte[] bytesId = tag.getId();// 获取id数组// info += ByteArrayChange.ByteArrayToHexString(bytesId) + "\n";// tv2.setText("标签UID: " + "\n" + info); // 读取存储信息// if (mRead.isChecked()) {// // mChange=false;// tv3.setText("读取成功! " + readTag(tag));// // readNfcVTag(tag);// etSector.setText("");// etBlock.setText("");// etData.setText("");// } // 写数据 if (ifWrite) { if (samCode.length() < 16){ for (int i = samCode.length(); i < 16; i++) { samCode+=" "; } } writeTag(tag, samCode); } // 转换为ASCll// if (mChange.isChecked()) {// tv3.setText(change(tag));// Toast.makeText(getBaseContext(), "转换成功", Toast.LENGTH_SHORT).show();// etSector.setText("");// etBlock.setText("");// etData.setText("");// } } } // 写数据 public void writeTag(Tag tag, String str) { MifareClassic mfc = MifareClassic.get(tag); try { if (mfc != null) { mfc.connect(); } else { Toast.makeText(this, "写入失败", Toast.LENGTH_SHORT).show(); return; } boolean b = mfc.authenticateSectorWithKeyA(5, code); if (b) { mfc.writeBlock(4 * 5, str.getBytes()); mfc.close(); ToastUtil.showToast("写入成功"); finish(); } } catch (IOException e) { e.printStackTrace(); ToastUtil.showToast("写入失败"); } } @Override protected void onResume() { super.onResume(); enableForegroundDispatch(); } private void enableForegroundDispatch() { if (mNfcAdapter != null) { mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); } } @Override public void onPause() { super.onPause(); disableForegroundDispatch(); } private void disableForegroundDispatch() { // TODO 自动生成的方法存根 if (mNfcAdapter != null) { mNfcAdapter.disableForegroundDispatch(this); } }}看完上述内容,你们对android中NFC读写功能的实现方法是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
功能
方法
设备
类型
支持
成功
内容
存根
标签
自动生成
生成
遗憾
信息
数据
提示
密码
数组
更多
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州紫鲸互联网科技有限公司
A股互联网金融科技公司
科技企业和互联网企业
互联网巨头反垄断金融科技
互联网最新的科技有限公司
喔噻互联网科技
万易互联网科技有限公司
九亚互联网科技
上海亿帐通互联网科技
互联网 科技服务平台
太原新华互联网科技学校怎么样
老年人脱离互联网科技的作文
银川新华互联网科技职业技术培训学校图片
阿大互联网科技有限公司
华中科技大学互联网的牛人
黑科技 体验场景 互联网大会
北京市互联网新科技
世界互联网科技成果奖
科技互联网经济论坛
唐山双旺合互联网科技产业园
云南咖啡
互联网科技产业
科技互联网公司装修
互联网金融 科技
科技类的互联网平台
皮皮虾互联网科技有限公司
互联网科技资金流入
云南互联网科技学费
绵阳真晨互联网科技有限公司
科技美学互联网 艺术