我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android实现读取NFC卡的编号

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android实现读取NFC卡的编号

本文实例为大家分享了Android读取NFC卡的编号具体代码,供大家参考,具体内容如下

NFC相关androidManifest文件设置:

一、权限:<uses-permission android:name="android.permission.NFC"/>
二、sdk级别限制:<uses-sdk android:minSdkVersion="10"/>
三、特殊功能限制<uses-feature android:name="android.hardware.nfc" android:required="true" />这个生命可以让你的应用在google play上被声明使用者必须拥有nfc功能。


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.nfc"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-permission android:name="android.permission.NFC" />
 
    <uses-feature
        android:name="android.hardware.nfc"
        android:required="true" />
 
    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.nfc.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
            </intent-filter>
 
            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
 
        </activity>
    </application>
 
</manifest>

上面的android:resource="@xml/nfc_tech_filter"是对tech类型的过滤条件,在res文件夹新建一个xml文件夹,新建nfc_tech_filter.xml文件。


<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.IsoDep</tech>
        <tech>android.nfc.tech.NfcA</tech>        
        <tech>android.nfc.tech.NfcB</tech>
        <tech>android.nfc.tech.NfcF</tech>
        <tech>android.nfc.tech.NfcV</tech>
        <tech>android.nfc.tech.Ndef</tech>
        <tech>android.nfc.tech.NdefFormatable</tech>
        <tech>android.nfc.tech.MifareClassic</tech>
        <tech>android.nfc.tech.MifareUltralight</tech>
    </tech-list>
</resources>

下面是封装了读取NFC卡号的一个类:


class NFCCard {
 
 private Activity context;
 private PendingIntent pendingIntent;
 private NfcAdapter adapter;
 private IntentFilter[] intentFilters;
 private String[][] techLists;
 private final char[] HEX_EXCHANGE = { '0', '1', '2', '3', '4', '5', '6',
   '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
 
 public NFCCard(Context context) {
  this.context = (Activity) context;
 }
 
 void init() {
 
  adapter = NfcAdapter.getDefaultAdapter(context);
  // 创建一个PendingIntent对象,当Android系统扫描到标签时,则会填充到这个对象。
  pendingIntent = PendingIntent.getActivity(context, 0, new Intent(
    context, context.getClass())
    .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
  IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
  try {
   ndef.addDataType("*/*");
  } catch (MalformedMimeTypeException e) {
   throw new RuntimeException("fail", e);
  }
  intentFilters = new IntentFilter[] { ndef, };
  techLists = new String[][] { new String[] { MifareClassic.class
    .getName() } };
 }
 
 public boolean open() {
  // TODO 打开NfcAdapter,已打开则返回true。应在onResume()中调用
  if (adapter != null)
   adapter.enableForegroundDispatch(context, pendingIntent,
     intentFilters, techLists);
  return adapter.isEnabled();
 }
 
 public boolean close() {
  // TODO 关闭NfcAdapter,已关闭则返回true
  if (adapter != null)
   adapter.disableForegroundDispatch(context);
  return !adapter.isEnabled();
 }
 
 public String getId(Intent intent) {
  // TODO 获取NFC卡的编号。应在onNewIntent()中调用
  Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  return toHexString(tagFromIntent.getId(), 0,
    tagFromIntent.getId().length);
 }
 
 private String toHexString(byte[] d, int s, int n) {
  // TODO 转换为十六进制形式的字符串
  final char[] ret = new char[n * 2];
  final int e = s + n;
  int x = 0;
  for (int i = s; i < e; ++i) {
   final byte v = d[i];
   ret[x++] = HEX_EXCHANGE[0x0F & (v >> 4)];
   ret[x++] = HEX_EXCHANGE[0x0F & v];
  }
  return new String(ret);
 }

需要注意的是,上面配置文件中有一个“ android:launchMode="singleTask"”,这是设置应用为单任务。代码中的getId(Intent intent)必须要在Activity的onNewIntent(Intent intent)中执行。因为系统检测到NFC卡的时候,会自动生成封装了相应Tag的Intent,当应用在接收到Intent的时候,默认情况下是启动自己的Activity,这样就会致使每次接收到Intent都会启动新的Activity。把应用设置为单任务后,就可以避免这种情况的发生。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android实现读取NFC卡的编号

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android实现读取NFC卡卡号示例

Android实现读取NFC卡卡号示例,具体如下:1.权限
2022-06-06

android编程实现sd卡读取数据库的方法

本文实例讲述了android编程实现sd卡读取数据库的方法。分享给大家供大家参考,具体如下: 先在 Manifest 里添加权限:2022-06-06

Android编程实现读取本地SD卡图片的方法

本文实例讲述了Android编程实现读取本地SD卡图片的方法。分享给大家供大家参考,具体如下:private Bitmap getDiskBitmap(String pathString) {Bitmap bitmap = null;try
2022-06-06

Android读取用户号码,手机串号,SIM卡序列号的实现代码

1、使用TelephonyManager提供的方法,核心代码: 代码如下:TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);S
2022-06-06

Android编程读取sd卡中图片的方法

本文实例讲述了Android读取sd卡中图片的方法。分享给大家供大家参考,具体如下: 一、获取读取SD卡的权限 2022-06-06

Android编程实现读取工程中的txt文件功能

本文实例讲述了Android编程实现读取工程中的txt文件功能。分享给大家供大家参考,具体如下: 1. 众所周知,Android的res文件夹是用来存储资源的,可以在res文件夹下建立一个raw文件夹,放置在raw文件夹下的内容会被原样打包
2022-06-06

Android开发实现读取Assets下文件及文件写入存储卡的方法

本文实例讲述了Android开发实现读取Assets下文件及文件写入存储卡的方法。分享给大家供大家参考,具体如下:调用一个反编译的.so文件,查看起加密和解密情况,需要解析上万的数组,而so文件加密解密都是通过Byte来进行,又需要把Str
2023-05-30

android实现读取、搜索联系人的代码

代码很简单,就不多废话了代码如下: //读取联系人 public static Uri CONTACTSURI = ContactsContract.Contacts.CONTENT_URI;//联系人 public static
2022-06-06

Android获取和读取短信验证码的实现方法

现如今,验证码在Android的客户端还是非常普遍的.通过手机账号和验证码直接去注册应用账户的信息.很多应用都以这种方式来完成注册.简单的介绍一下吧. Android获取短信验证码还是比较简单的,通过Mob官网提供的ShareSDK,调
2022-06-06

Android编程重写ViewGroup实现卡片布局的方法

本文实例讲述了Android编程重写ViewGroup实现卡片布局的方法。分享给大家供大家参考,具体如下: 实现效果如图:实现思路 1. 重写onMeasure(int widthMeasureSpec, int heightMeasure
2022-06-06

Android编程实现向SD卡写入数据的方法

本文实例讲述了Android编程实现向SD卡写入数据的方法。分享给大家供大家参考,具体如下: 1.代码: pu
2022-06-06

Android编程实现读取手机联系人、拨号、发送短信及长按菜单操作方法实例小结

本文实例讲述了Android编程实现读取手机联系人、拨号、发送短信及长按菜单操作方法。分享给大家供大家参考,具体如下: 1.Andrid项目结构图↓主要操作图中红色方框内的文件。2.首先布局代码如下 a, main.xml 程序运行的主界面
2022-06-06

Android实现文件存储并读取的示例代码

要求: 输入文件名,文件内容分别存储在手机内存和外存中,并且都可以读去取出来。 步骤: 1.创建一个名为CDsaveFile的Android项目 2.编写布局文件activity_main.xml:
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录