安卓 NFC 功能使用小结

本文介绍了Android NFC功能的基础使用,包括配置权限、获取NfcAdapter对象、开启/关闭前台发布系统、解析TAG数据等。提供了两种使用方式,一种是前台使用,另一种是通过Intent形式。强调了官方文档的重要性,并给出了读取NDEF格式和MifareClassic标签数据的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近整理接手项目代码,其中有用到 NFC 功能,今天抽了个时间了解了一下,简单使用应该不难,高级扩展我就不知道喽,下面小结一番!

知识了解

网上看到一篇博客介绍 NFC 功能的,分了理论篇和实践篇,理论篇就是大致了解一下 NFC 这个功能,我看了觉得有了挺详细的概念,但是他那篇文章写的有点乱,后面看了下官方文档,发现官方文档也不错,而且有中文版,其实也是该先看官方文档:

https://developer.android.google.cn/guide/topics/connectivity/nfc

下面是参考的那篇博客:

东西太多了,其实我们只要掌握如何使用就可以的,下面讲解,有两种方式。

前台使用

1、配置权限

配置AndroidMenifest.xml:

<!--NFC权限-->
<uses-permission android:name="android.permission.NFC" />
<!-- 要求当前设备必须要有NFC芯片 -->
<uses-feature android:name="android.hardware.nfc" android:required="true" />
2、获取 NfcAdapter 对象
	@Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate();
        mNfcAdapter= NfcAdapter.getDefaultAdapter(this);//设备的NfcAdapter对象
        if(mNfcAdapter==null){
   //判断设备是否支持NFC功能
            Toast.makeText(this,"设备不支持NFC功能!",Toast.LENGTH_SHORT);
            finish();
            return;
        }
        if (!mNfcAdapter.isEnabled()){
   //判断设备NFC功能是否打开
            Toast.makeText(this,"请到系统设置中打开NFC功能!",Toast.LENGTH_SHORT);
            finish();
            return;
        }
        mPendingIntent=PendingIntent.getActivity(this,0,new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),0);//创建PendingIntent对象,当检测到一个Tag标签就会执行此Intent,设置 SINGLE_TOP 标志,只打开当前活动
    }

这里还是在 onCreate 中写吧!

3、开启/关闭前台发布系统
	//页面获取焦点
	@Override
    protected void onResume() {
   
        super.onResume();
        if (mNfcAdapter!=null){
             mNfcAdapter.enableForegroundDispatch(this,mPendingIntent,null,null);//打开前台发布系统,使页面优于其它nfc处理.当检测到一个Tag标签就会执行mPendingItent
        }
    }

	//页面失去焦点
	@Override
    protected void onPause() {
   
        super.onPause();
        if(mNfcAdapter!=null){
   
            mNfcAdapter.disableForegroundDispatch(this);//关闭前台发布系统
        }
    }

只在当前页面显示的时候使用 NFC,是很合理的。

4、获取 TAG 对象
	@Override
    protected void onNewIntent(Intent intent) {
   
        super.onNewIntent(intent);
        mTag=intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值