NFC读取卡号学习

来源:互联网 发布:淘宝女装店推荐高品质 编辑:程序博客网 时间:2024/05/21 22:35

马克.

1.权限,读卡权限

    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.NFC"/>
    <uses-feature android:name="android.hardware.nfc" />

懒得找大概这些把,网络上大把大把的.

和类申明

<activity
            android:name="com.cpu.charge.MainActivity"
            android:configChanges="keyboardHidden|orientation"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:windowBackground="@null"
            android:windowSoftInputMode="adjustUnspecified|stateAlwaysHidden" >
            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
                <action android:name="android.nfc.action.TAG_DISCOVERED" />
            </intent-filter>
            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
        </activity>

2.卡类型,需要在res文件目录下创建xml文件夹,并创建一个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>

3.写你的读卡的类:其中,重写protected void onNewIntent(Intent intent) 方法.

然后使用Parcelable parcelable = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Tag tag = (Tag) parcelable;
IsoDep isodep = IsoDep.get(tag);
iso_tag = new Iso7816.Tag(isodep);
iso_tag.connect();

获取响应的tag

再然后写好查询的语句....不同的卡规格不一样,你要得到卡的结构类型然后再去写语句

byte[] SELECT_FILE2 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x3F, (byte) 0x00 };// select
// 根目录MF

byte[] SELECT_FILE_DR2 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0xDF, (byte) 0x04 };// select
// DF
byte[] SELECT_FILE3 = { (byte) 0x00, (byte) 0xA4,
(byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x15, (byte) 0x1E};// select
//公共基本数据文件

byte[] SELECT_FILE_INFO2 = { (byte) 0x00, (byte) 0xB0,
(byte) 0x95, (byte) 0x0A, (byte) 0x00};// select
// info
byte[] SELECT_FILE_INFO3 = { (byte) 0x00, (byte) 0xB0,
(byte) 0x96, (byte) 0x16, (byte) 0x00};// select

然后了就用你的到的tag去获取你想要的东西

Response result_info2 = tag.executeCmd(SELECT_FILE_INFO3);// 查询info

if (result_info.isOkey()) {//判断一下获得是否正确

然后解析就好了 返回的东西和你想要的肯定有差别后面就是截取数据了
final String cardInfo2 = result_info2.toString();
String cardNumber = cardInfo2.substring(30, 64);
String cardNum  = "";
for (int i = 0; i < cardNumber.length()/2; i++) {
String str = cardNumber.substring(2*i,2*(i+1));
cardNum = cardNum+str.substring(1,2);
}


好了卡号获取到了


暂时还没有写入的需求....也就懒得看了....读取的差不多就这些步骤,马克一下.

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 18个月宝宝咳嗽有痰怎么办 2个月宝宝鼻子不通气怎么办 两个月的宝宝鼻塞不通气怎么办 两个月大的宝宝鼻子不通气怎么办 宝宝6个月咳嗽有痰怎么办 6个月的宝宝有痰怎么办 小孩流有点咳嗽和脓鼻涕怎么办 6个月的宝宝流鼻涕该怎么办? 小孩鼻塞不流鼻涕总吸鼻子怎么办 四个多月宝宝感冒鼻塞严重怎么办 怀孕6个月严重感冒鼻塞怎么办 16个月的宝宝上火流鼻血怎么办 小狗咳嗽打了针还不好怎么办 孕妇感冒后鼻涕带血口腔发炎怎么办 宝宝出生17天睡眠不安稳怎么办 月子里宝宝睡觉老是睡不安稳怎么办 孕妇晚期咳嗽鼻涕黄咽喉痛怎么办 狗狗流脓鼻涕拉稀没食欲怎么办 孕妇眼睛充血很快就有眼屎怎么办 婴儿的眼睛流泪生眼屎怎么办呀 刚出生的婴儿眼睛有眼屎怎么办 25天的婴儿鼻子有鼻屎不通怎么办 一个月的宝宝好多鼻屎怎么办 隆鼻取线的时候好多鼻屎怎么办 小孩流浓鼻涕怎么办最简单方法 小孩流黄鼻涕怎么办最简单方法 一岁八个月宝宝鼻涕和痰多怎么办 空调铜管过不了预埋管的弯头怎么办 如果朝鲜和韩国打起来中国怎么办 寄信时不知道对方的邮编怎么办 地下钱庄转账后银行户被冻结怎么办 老师遇到素质极差的垃圾学生怎么办 验证码忘了手机号也换了怎么办 手机上的验证码忘了怎么办 进入医联网的验证码忘了怎么办 育碧换电脑了无法同步云存档怎么办 刺客信条起源育碧需要激活码怎么办 电脑连不上网怎么办wifi可以用 电脑登录账号密码错误锁定了怎么办 白色T恤衫上沾上黑色的黄油怎么办 家教遇到成绩好的学生该怎么办