Activity使用NFC

一、声明全局变量

声明全局变量:PendingIntent 和 NfcAdapter

PendingIntent 说明:PendingIntent可以看作是对Intent的一个封装,但它不是立刻执行某个行为,而是满足某些条件或触发某些事件后才执行指定的行为。
PendingIntent详解:https://blog.csdn.net/hudashi/article/details/7060837

 private PendingIntent pendingIntent;//Nfc适配器private NfcAdapter nfcAdapter;

二、给NFC适配器赋值

在onCreate方法中对nfcAdapter 进行赋值。
nfcAdapter.isEnabled()返回值为false时表示NFC未启动。

 nfcAdapter = NfcAdapter.getDefaultAdapter(this);if (nfcAdapter != null&&nfcAdapter.isEnabled()){pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);}

三、NFC的前台调度

在onResume方法中启用

Enable foreground dispatch to the given Activity.
启用对给定Activity的前台调度。

     @Overrideprotected void onResume() {super.onResume();if (nfcAdapter != null&&nfcAdapter.isEnabled()) {if (pendingIntent ==null){pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);}nfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);}}

在onPause方法中禁用

Disable foreground dispatch to the given activity.
禁用对给定Activity的前台调度。

 @Overrideprotected void onPause() {super.onPause();if (null != nfcAdapter&&nfcAdapter.isEnabled()) {nfcAdapter.disableForegroundDispatch(this);}}

三、NFC刷卡事件处理

在onNewIntent方法中获取NFC调度事件

 @Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);String action = intent.getAction();if (!EmptyUtil.isEmpty(action)){if (NfcAdapter.ACTION_TECH_DISCOVERED.equalsIgnoreCase(action) || NfcAdapter.ACTION_TAG_DISCOVERED.equalsIgnoreCase(action)  || NfcAdapter.ACTION_NDEF_DISCOVERED.equalsIgnoreCase(action)) {try {Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);MifareClassic mifareClassic = MifareClassic.get(tag);if (mifareClassic!=null) {mifareClassic.connect();if (!mifareClassic.isConnected()){Log.w(TAG,"卡连接失败");return;}//获取卡的物理卡号String CardId=StringUtil.byteToHex(mifareClassicard.getTag().getId());Log.i(TAG,CardId);}} catch (Exception e) {e.printStackTrace();}}}}

四、注意事项

在项目的AndroidManifest.xml 文件添加对NFC硬件的使用权限。

 <!--外部存储读取权限--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--外部存储写入权限--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--允许设备访问NFC硬件--><uses-permission android:name="android.permission.NFC" />

有问题处,还请指出感激不尽。

参考资料:
https://blog.csdn.net/qq_36135335/article/details/82463179
https://blog.csdn.net/hudashi/article/details/7060837
https://developer.android.google.cn/reference/android/nfc/NfcAdapter

Android端使用NFC获取物理卡号相关推荐

  1. android 7.1 RIL 获取SIM卡号

    平台 RK3288 + Android 7.1 + EC20 流程 获取手机号代码: TelephonyManager telMgr = (TelephonyManager) getSystemSer ...

  2. IC卡卡号修改软件,UID卡CUID卡物理卡号修改软件操作演示

    普通IC卡的卡号是唯一的,也是锁死的,无法修改,而UID卡和CUID卡的物理卡号是可以修改的,一些考勤等用户需要修改卡片的卡号. 一般考勤等使用的卡号是10进制的,软件支持写入10进制卡号和16进制卡 ...

  3. C#使用读卡器读取身份证信息(包含物理卡号)

    说明:本人用的是精伦身份证阅读器idr210 免驱 摘要:目前市面上读取身份证技术已经很成熟了,大多数文章都介绍了读取身份证的详细信息,但是这些信息里并不包含身份证的物理卡号,所以本文讲解的重点在读取 ...

  4. 用C#进行北斗串口编程之一:获取北斗卡号

    北斗卫星导航系统(以下简称北斗系统,英文缩写BDS),是中国着眼于国家安全和经济社会发展需要,自主建设运行的全球卫星导航系统,是为全球用户提供全天候.全天时.高精度的定位.导航和授时服务的国家重要时空 ...

  5. android学习笔记之——获取SD卡及手机ROM容量

    继续android学习之旅,今天通过一个小例子,来获取SD卡的容量和手机ROM的容量,具体代码如下: package com.urovo.sdcardspace;import java.io.File ...

  6. 获取SIM卡号(IMSI)

    又到一周周未时,该写博客了,但想了一下,突然发现这周什么也没干,也不知道写什么,最后突然在桌面上发现了这段代码,获取IMSI用的,也就拿这东东来写写吧,赶快写完得玩会游戏,游戏时间又到了,Dota-- ...

  7. Android双卡手机:获取主卡副卡的simid(上)方案实现

    原文地址:http://blog.csdn.net/ymcl_hx/article/details/53484797 近期公司下发了新任务,需要对Android手机进行双sim卡的管控,而这个功能的关 ...

  8. android 音乐播放器 获取sd卡所有音乐文件,Android Studio音乐播放器无法读取SD卡,只有内部存储器...

    我很抱歉,如果这原来是一个愚蠢的问题,它可能会成为一个快速修复,但我只是无法弄清楚.我在android studio中创建了音乐播放器,并且没有任何sdcard上的歌曲不会显示在列表视图中,只有内部内 ...

  9. 扫描NFC卡,获取卡号存储到本地并可以以Excel形式导出数据

    这是一个使用支持NFC的手机扫描NFC射频卡获取到卡号,使用greenDao数据库做本地存储,扫完之后可以将数据以Excel表格形式导出查看数据.不是什么新技术,内容比较简单,这里就主要贴源码了,没有 ...

最新文章

  1. 【视频】V4L2之ioctl
  2. [IE]微软发布IE9预览版- 建议Web开发者开始研究SVG
  3. 产品经理的知识结构是什么
  4. Codeforce1311B. WeirdSort (冒泡排序)
  5. python中函数的参数传递
  6. DTCC参会归来有感
  7. 正态分布假设检验相关知识
  8. 给table表格加斜线
  9. 3分钟打动投资人:商业计划书篇
  10. 【攻略】2014年跨境进口型电商十大模式盘点
  11. OpenSSL爆出严重bug漏洞 Heartbleed bug CVE-2014-0160
  12. 3.21 refused bequest
  13. ## Android Studio 开发(四)--蓝牙通信
  14. 最佳 Maya 免费建模插件!
  15. mac 桌面分屏软件_6款好用的Mac分屏软件推荐
  16. 张一鸣打造“抖音”等现象级产品的秘密:技术深度融合业务,引爆产品创新!
  17. 手撕鸭腌料批发场 新奥尔良烤肉腌料批发 奥尔良鸡叉骨腌料批发
  18. 学C++和嵌入式,未来发展好不好?
  19. matlab abc dq,关于matlab及pscad中abc2dq模块的使用.doc
  20. 什么是web前端驻场开发,费用怎么样

热门文章

  1. DFPlayer Mini 播放器模块
  2. 基于AT89S51的单片机无线双显示抢答器
  3. twitter storm源码走读之1 -- nimbus启动场景分析
  4. aka鉴权 ims_IMS的AKA鉴权机制
  5. OSSEC_study3——install WUI
  6. 数据可视化练习-用powerBI生成自动播放的动态排行榜
  7. Dreamweaver CS6下载
  8. thinkphp验证器
  9. android 10.0 SystemUI导航栏默认背景色的修改
  10. Java毕设项目中小学家校通系统计算机(附源码+系统+数据库+LW)