1.问题描述:使用手机NFC复制公司门禁卡时出现读取信息失败提示,报错标号103,如图所示。
2.尝试办法:经搜索发现这是工商银行APP给的提示,卸载工商银行APP之后,不再出现这种提示,但手机依旧无法读取门禁卡,具体变现为:门禁卡接近手机NFC部分,手机有提示音,但未出现任何界面。
3.解决方法:打开小米钱包(小米手机),点击小米门卡,然后用门禁卡靠近手机NFC部分进行添加。此时添加成功。
4.原理:第一次尝试时,手机调用工商银行APP读取门禁卡,读取失败,第二次尝试时,手机不知道该调用哪个APP进行读取,或者没有可调用的APP进行读取。在指定使用小米钱包进行读取之后,可以读取成功。
1.问题描述:使用手机NFC复制公司门禁卡时出现读取信息失败提示,报错标号103,如图所示。2.尝试办法:经搜索发现这是工商银行APP给的提示,卸载工商银行APP之后,不再出现这种提示,但手机依旧无法读取门禁卡,具体变现为:门禁卡接近手机NFC部分,手机有提示音,但未出现任何界面。3.解决方法:打开小米钱包(小米手机),点击小米门卡,然后用门禁卡靠近手机NFC部分进行添加。此时添加成功。4.原理:第一次尝试时,手机调用工商银行APP读取门禁卡,读取失败,第二次尝试时,手机不知道该调用哪个APP进
基础条件:门禁刷卡器能识别
NFC
手机(卡模拟状态下的CPU卡)。
验证办法:打开手机的
NFC
,在门禁刷卡器上刷一下,门禁刷卡器有反应就行(响一声),那么就满足了基础条件。如果门禁刷卡器没反应,那就不需要考虑了,除非升级门禁刷卡器。
2)、必要条件:门禁系统采用UID号验证,否则如下办法无用。
1.不能模拟
门禁卡
只出现在非
小米手机
用户上,所以可以借朋友的
小米手机
登录
小米
运动进行
复制
2.要进行实名认证,但非
小米
用户找不到实名认证的入口。可以百度搜索“
小米
钱包”进行注册,登录。
并且添加一张银行卡。
但是添加完银行卡后并不意味着实名完成。
点击
小米
支付官网https:/...
前言:个人用过原生安卓,俄罗斯版和波兰版miui,习惯了miui,就不喜欢折腾原生安卓了。由于国内版的miui的种种毛病,对于我这种喜欢自由的人来说,还是国际版和俄罗斯版的用起来顺手。用惯了俄罗斯版,想用国际版的来尝尝鲜。第一次刷国际版,卡在了goo的认证,总是出现检查网络等一系列网络原因。明白人都知道,这是由于和goo的网络不畅通的原因导致的。经过一番折腾,终于搞定,记录在这里备忘。
前提条件...
这里就讲建立sim卡
连接
的具体操作了,总结一下在建立卡
连接
的时候出现的问题以及对问题的
解决办法
。
问题1:遇到闪退,或者是应用没有
报错
但是就是程序与sim卡之间就是没有建立
连接
。
解决:一般这问题是openmobileapi.jar 包版本过低,更新到最新版本编号
问题2:如果应用于卡能建立
连接
但是打不开通道(有openLogicalChannel和openBasicChannel),或者是
android:name="com.cpu.charge.MainActivity"
android:configChanges="keyboardHidden|orientation"
实现
NFC
读取
门禁卡
信息
,需要使用Android的
NFC
管理器和
NFC
标签技术。同时,为了将
门禁卡
信息
写入SE卡中,还需要使用SE卡的API接口。以下是一些基本步骤:
1. 确认设备支持
NFC
功能,并且已经开启
NFC
。
2. 创建一个
NFC
Adapter对象,并且设置一个PendingIntent来接收
NFC
标签的检测事件。
Nfc
Adapter
nfc
Adapter =
Nfc
Adapter.getDefaultAdapter(this);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
3. 在onNewIntent()方法中处理
NFC
标签检测事件,获取
NFC
标签
信息
。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Tag tag = intent.getParcelableExtra(
Nfc
Adapter.EXTRA_TAG);
byte[] id = tag.getId();
String cardId = HexUtil.encodeHexStr(id);
//处理
门禁卡
信息
//...
4. 使用SE卡API接口写入
门禁卡
信息
。
//获取SE卡对象
Card card = mCardManager.connect();
//创建APDU命令
byte[] apduCommand = new byte[] {...};
//发送APDU命令并接收返回结果
byte[] apduResponse = card.transceive(apduCommand);
//处理返回结果
//...
需要注意的是,具体的SE卡API接口使用方法可能因为不同的SE卡而有所不同,需要参考对应的SE卡开发文档。