当前应用拦截NFC响应,不弹出选择框教程

从上一篇的NFC支持所类型的卡读取之后,下面要解决的就是NFC的拦截响应,如果这一步没有做,当系统内有多个支持NFC的应用的时候,就会在nfc刷卡的时候弹出多个应用选择,我们需要的场景是,当前应用需要用NFC才去刷卡,然后本应用拦截intent分发(Using
the Foreground Dispatch System).

具体的方案:

1.创建PendingIntent来分发要响应的Activity

  mPendingIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, NFCActivity.class).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

2.当刷卡的时候,使用intent过滤器来过滤出你要拦截的Intent

  IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
        try {
            ndef.addDataType("*/*");
        } catch (IntentFilter.MalformedMimeTypeException e) {
            throw new RuntimeException("fail", e);
        }
        intentFiltersArray = new IntentFilter[]{ndef,};

3.设置你要处理的tag technologies到String数组中

techListsArray = new String[][]{new String[]{NfcA.class.getName()}};

4.在onResume和onPause中设置NFCAdapter

public void onPause() {
    super.onPause();
    mAdapter.disableForegroundDispatch(this);
}

public void onResume() {
    super.onResume();
    mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
}

当然之前要定义NfcAdapter

  nfcAdapter = NfcAdapter.getDefaultAdapter(this);

这个问题的解决体会到一件事,这个问题在国内的博客论坛都没有搜索到,在StackOverFlow上有一篇

http://stackoverflow.com/questions/16542147/how-to-read-nfc-tags-to-prevent-system-dialogs-nfc-starter-list-and-tags-being-d

里面的链接指向的是Android develop。。。NFC
foreground dispatching
.

所有的基础教程都可以在developer中找到,以后再也不瞎折腾了,有问题找google

时间: 2024-10-08 08:42:30

当前应用拦截NFC响应,不弹出选择框教程的相关文章

Siebel 找字段、下拉菜单设置值、弹出新页面、弹出选择框、设置默认值 、按钮代码

产品缺陷太多,跟用户交互不人性化.例如搜索新建客户功能,用户输入后会自动保存数据,一旦保存后一. 找字段1.简单 CTRL+Q CTRL+Q 服务请求编号----对应的表.字段.长度: 客户编码-----对应的表.字段.长度(弹出新页面):- 点击上面的pick Applet会弹出“选取客户”对话框 有JOIN就不用TABLE:require代表必填 字段有两个值----项目编号 下图确定只有projectNum有用 3.表单中的字段(不在list column中,而是在control) 二.下

框架-弹出选择框(传编号名称)

弹出选择框1.显示页面(列表页)Jquery方法 //选择课件CorrespondingA            $("body").on("click", "#btnCourseware", function() {                var sUrlParam = "&selectcourseware=1";                var dlgParam = {                

生成凭证-启用多个规则弹出选择框界面

1,实现以下两个接口, (1)IDAPTransformAdapter和IPCATransformAdapter, (2)前台注册dapadaptor, (3)查询表格的每一行数据必须有company.id的值 1 package com.kingdee.eas.re.sales.inTransfer.web; 2 3 import com.kingdee.bos.Context; 4 import com.kingdee.bos.metadata.bot.BOTMappingInfo; 5 i

框架-弹出选择框(Jquery传递Json数组)

给一个button按钮,执行方法 Json传值$("body").on("click", "#btnsure", function() {                var cblInfo = $.asGetValuesOfCtrlName("gridform_myTable", "gridSel", "|");                if (cblInfo.length &

Jquery实现弹出选择框选择后返回,支持多级分类

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <t

appium+python自动化98-非select弹出选择框定位解决

前言 遇到问题:document.getElementsByClassName(...)[0] is undefined 选择框如果是select标签的,可以直接用select专用的方法去定位点击操作.其它不是select选择框的时候,那就按正常操作步骤先点输入框,再点选项就行了. 可是有些选择框就是不听话,你会发现用selenium死活定位不到,这个时候只能用万能的js来解决了. input选择框 1.先看下弹出框的常见,如下这种 2.查看元素属性,是input标签,并且是readonly属性

android中常用的弹出提示框

转自:http://blog.csdn.net/centralperk/article/details/7493731 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有

iOS开发——ActionSheet的使用与弹出选择对话框

在我们的iOS开发中,常会见到如下界面的需求: . 也就是点击按钮,出现选择提示框,我们今天使用两种方式(ActionSheet和AlertController)来实现该功能.示例代码上传至: https://github.com/chenyufeng1991/iOS-ActionSheet   . [使用ActionSheet实现] (1)实现代码如下: #import "ViewController.h" @interface ViewController ()<UIActi

【2017-05-02】winform弹出警告框是否进行增删改操作、记事本制作、对话框控件和输出输入流

一.winform弹出警告框是否进行增删改操作 第一个参数是弹出窗体显示的内容,第二个参数是标题,第三个参数是该弹窗包含确定和取消按钮. 返回的是一个枚举类接收一下. 再进行判断,如果点的是确定按钮,再进行下一步的增删改操作. 二.记事本的制作 1.菜单工具栏MenuStrip-插入标准项 2.TextBox -显示部分 小箭头 MultiLine 选中多行 Dock属性占满. 3.功能 - 撤销 - 剪切 - 粘贴 - 复制 - 删除 - 全选 - 时间 - 查找 单独做一个窗体点击打开 把主