首先在AndroidManifest.xml文件中添加如下配置

<!-- SDK版本至少为14 -->
<uses-sdk android:minSdkVersion="14"/>
<!-- 添加NFC权限 -->
<uses-permission android:name="android.permission.NFC" />
<!-- 要求当前设备必须要有NFC芯片 -->
<uses-feature android:name="android.hardware.nfc" android:required="true" />

然后创建一个NFC写标的类MainActivity

NFC主要相关类有NdefMessage、NdefRecord、Ndef、NdefFormatable,具体使用方法见如下代码及注释

package com.xindecoiot.nfcreadinfo;import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.nfc.tech.NdefFormatable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private NfcAdapter mNfcAdapter;private PendingIntent mPendingIntent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onStart() {super.onStart();mNfcAdapter = NfcAdapter.getDefaultAdapter(this);// 用于感应到NFC时启动该Activity// 这里建议将处理NFC的子类的launchMode设置成singleTop模式,这样感应到标签时就会回调onNewIntent,而不会重复打开页面mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0);}/*** 获得焦点,按钮可以点击*/@Overridepublic void onResume() {super.onResume();// 设置当该页面处于前台时,NFC标签会直接交给该页面处理if (mNfcAdapter != null) {mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, null, null);}}/*** 暂停Activity,界面获取焦点,按钮可以点击*/@Overridepublic void onPause() {super.onPause();// 当页面不可见时,NFC标签不交给当前页面处理if (mNfcAdapter != null) {mNfcAdapter.disableForegroundDispatch(this);}}// 将Activity的launchMode设置成singleTop,这样当感应到NFC标签时不会重复打开页面,而是回调该方法@Overridepublic void onNewIntent(Intent intent) {Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);writeTag(detectedTag);}/*** 写标* @param tag*/public void writeTag(Tag tag) {if (tag == null) {return;}// 根据网址创建待写入的数据NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{NdefRecord.createUri(Uri.parse("https://www.himmy.cn"))});// 获取内容字节大小int size = ndefMessage.toByteArray().length;try {// 获取NedfNdef ndef = Ndef.get(tag);// 不为空表示该标签为Nedf格式if (ndef != null) {ndef.connect();// 是否可写if (!ndef.isWritable()) {Toast.makeText(this, "标签不支持写入", Toast.LENGTH_SHORT).show();return;}// 判断写入内容大小是否超出允许写入的最大值if (ndef.getMaxSize() < size) {Toast.makeText(this, "写入内容过大", Toast.LENGTH_SHORT).show();return;}// 写入数据ndef.writeNdefMessage(ndefMessage);Toast.makeText(this, "写入成功", Toast.LENGTH_SHORT).show();} else { // 标签非Nedf格式的情况NdefFormatable format = NdefFormatable.get(tag);// 不为空表示该标签允许格式化成Ndef格式if (format != null) {format.connect();// 格式化并写入Nedf内容format.format(ndefMessage);Toast.makeText(this, "写入成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "标签不支持Nedf格式", Toast.LENGTH_SHORT).show();}}} catch (Exception e) {}}
}

最后记得把MainActivity的启动模式设置成singleTop

<activityandroid:name=".MainActivity"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

测试

  1. 首先准备一台支持NFC功能的手机,打开我们写好的应用
  2. 准备一张NFC标签,靠近手机NFC读取区域(一般在背部)
  3. 提示写入成功后,关闭应用
  4. 再次将NFC标签靠近手机,将会提示访问我们写入标签的网页,点击确认就会打开浏览器访问该网页

Android NFC标签写入网址,感应到标签访问网页相关推荐

  1. Android NFC 标签读写Demo与历史漏洞概述

    文章目录 前言 NFC基础 1.1 RFID区别 1.2 工作模式 1.3 日常应用 NFC标签 2.1 标签应用 2.2 应用实践 2.3 标签预览 2.4 前台调度 NFC开发 3.1 NDEF数 ...

  2. Android NFC标签写入应用包名,感应到标签自动打开应用

    首先在AndroidManifest.xml文件中添加如下配置 <!-- SDK版本至少为14 --> <uses-sdk android:minSdkVersion="1 ...

  3. android自动添加包,android nfc写入应用程序包名与网址 自动打开应用程序与网址...

    安卓手机大部分手机提供了NFC芯片   可以根据NFC传递数据   NFC卡与手机  手机与手机数据等交互  非常好的功能,这篇文章教大家如何向NFC卡或标签写入功能. 用法 :  点击包名   将N ...

  4. android nfc标签类型,Android NFC标签 开发深度解析 触碰的艺术

    原标题:Android NFC标签 开发深度解析 触碰的艺术 本文来自于CSDN博客,作者:郭朝,已获授权,版权归原作者所有,未经作者同意,请勿转载. 欢迎同有博客好文章的作者加微信(ID:tm_fo ...

  5. Android NFC标签 开发深度解析 触碰的艺术

    这篇博客是在鸿洋的微信公众号看到的感觉收益非浅.于是转存于自己博客上以后可查阅. 本文由郭朝投稿. 郭朝的博客地址: http://blog.csdn.net/smartbetter 有几天没有更新博 ...

  6. Android之自定义瀑布流式的标签列表

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50965588 本文出自:[顾林海的博客] ##前言 由于一些原因,马上 ...

  7. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )

    文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...

  8. android sdk是灰的,Android Studio 2.3 sdk管理器标签灰显

    Android Studio 2.3 - >配置 - > SDK管理器. 这些选项卡呈灰色显示: SDK工具,SDK更新站点.此外,"Show Package Details&q ...

  9. android热门搜索标签,Android网易云历史搜索和热门标签

    Android网易云历史搜索和热门标签 最近开发了一个网易云音乐播放器,有这么一个需求,需要展示搜索建议,历史搜索记录 项目地址: github.com/shellhub/Ne- search_ent ...

最新文章

  1. VMware下ghost安装XP后无法从硬盘启动的问题
  2. 正则表达式之IP地址检验
  3. linux父子进程同步实验,Linux-父子进程的简单同步
  4. [HNOI2012]三角形覆盖问题
  5. 电商美工必备,品质超高的万能套用促销PSD分层模板,宝藏!
  6. LuckyFrame执行Web自动化用例
  7. kuangbin专题一——Fliptile
  8. JavaWEB-Servlet
  9. 【解决思路】当前不会命中断点,还未为文档加载任何符号
  10. python 冒号分隔_以冒号分隔的分析
  11. 学习Pandas(Kaggle)
  12. Cisco VPP IKEV2 配置说明
  13. zlib库介绍一:zlib简介
  14. 给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)
  15. 利用Matlab解决线性规划问题并绘制特定形状的空间曲面(约束区域的绘图)
  16. Linux之ss命令
  17. 专访 iOS 技术专家孙源:开发者的成长始于“死磕”
  18. Android 错把setLayerType当成硬件加速
  19. 5个免费的项目管理工具7款最流行的在线项目管理工具
  20. 【tensorflow】生成.pb文件

热门文章

  1. python安装错误0x80072efd未指定的错误
  2. 服务器系统装音频设备,远程服务器未安装音频设备
  3. 分众江南春:十年心智之争复盘,品牌如何占领用户心智
  4. java毕业设计心理咨询与诊断系统mybatis+源码+调试部署+系统+数据库+lw
  5. gitlab邮箱配置 及 163邮箱发件失败
  6. Unity获取模型的顶点坐标
  7. 女文科生“弃文从理”转行做测试员,我是怎么做到工资涨了4倍的
  8. 基于DLNA实现iOS,Android投屏:SSDP发现设备
  9. 设计模式的理解与举例
  10. 广州pmp资格认证培训