Android NFC_P2P 开发

本文介绍了Android NFC_P2P开发的关键步骤,包括在Manifest中声明NFC消息拦截的Activity Filter,以及在应用程序中判断NFC是否开启的方法。作者提供了发送端和接收端的GitHub源码链接,并推荐了《NFC实战详解》一书作为NFC基础知识的学习资源。

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

# Android NFC开发 #

----------

2017-05-19

无奈,一直用MarkDown编辑器 现在这种编辑器用的不习惯了,刚才看私信发现有童鞋提到不走onNewIntent方法,我回到博客发现有些地方没有写,我的锅我自己背!

首先 需要在Manifest中为拦截NFC消息的Activity声明Filter


<intent-filter>
                <!--拦截NFC消息-->
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="text/plain" />
</intent-filter>

然后,需要为指定的Activity设置启动模式


android:launchMode="singleInstance"


就可以了

感谢Ds_Esaka提出的问题!


另外把源码上传到github上了

发送端 https://github.com/RedWolfChao/NFCSending

接收端 https://github.com/RedWolfChao/NFCReceiving

----------





----------

**我参照了NFC实战详解(赵波的一本书),没有NFC基本知识了解的推荐去看这本书的前3章,1-2小时就看完了  --**

2016年11.17补充  今天用到了NFC的技术,发现BLOG上有点东西忘记了,现补上..需要在配置文件中声明一个权限,和安装设备,没有NFC功能的设备不让下载--应用市场可用

<!-- NFC权限 -->
  <uses-permission android:name="android.permission.NFC" />
  <!-- 限制安装的设备 -->
  <uses-feature
  android:name="android.hardware.nfc"
  android:required="true" />


**NFC的介绍啥的,我也不说了,一百度一大片,我就只上我对NFC以及代码的理解了,对了(我用的Mark编辑的,可能会有点符号,请勿见怪- -)**

----------

## 这里要说的是采用setNdefPushMessage的方式,手动发送一个NFC信息,属于NFC设备对NFC设备(p2p)的方式 ##
**PS:在这里我要吐槽一下,对于这个p2p方式的NFC数据传送,也是没谁了,要求手机的NFC传送点和点对上才能和平发送,就是手机后背有个NFC点,碰上,屏幕上才会弹出 "触摸发送" 选项,估计是塑料壳的原因吧,金属壳的不知道会不会更容易些,不吐了,上货!**


----------
**步骤1. 检查手机是否有NFC功能①,以及NFC和NFC_Beam功能②是否开启;**

**①:有NFC功能才能进行NFC的相关操作**

**②:NFC_Beam指的是设备和设备之间传输必须要开的(本人是这么理解的),不开仅仅可以设备扫卡(比如公交卡等NFC卡)**

**步骤2. 发送消息setNdefPushMessage**

**步骤3. 拦截(姑且称之为拦截)消息并处理**

**步骤4. 在MainFest文件中添加相应权限和activity-action**


----------


## 下面上代码,具体细节在注释中都能看见 ##

**对了,对NFC进行操作需要NfcAdapter这个类,是Android自带的**

**步骤1. 我定义了一个方法,进行了NFC是否开启的判断**

private void checkNFCFunction() {
    //  获取NFCAdapter(这个是全局的,参数是一个Context)
    mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
    //  mNfcAdapter为Null表示机器没有NFC功能
    if (mNfcAdapter == null) {
        //  提示      (这里是自定义的Log日志类,没有定义过可以用Log.I进行替换或者直接吐司,我也会上传代码)
        DebugUtils.LogI("没有NFC功能", getClass());
    } else {
        //  表示NFC功能未打开,就要弹出Dialog提示用户打开了
        if (!mNfcAdapter.isEnabled()) {
            Dialog dialog = null;
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("警告!");
            builder.setMessage("NFC功能未开启,是否前往开启(不开启将无法继续)");
            builder.setPositiveButton("开启", new DialogInterface.OnClickListener() {
   
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值