NFC读取sim卡之建立卡连接

原创 2016年08月30日 17:10:48

这里就讲建立sim卡连接的具体操作了,总结一下在建立卡连接的时候出现的问题以及对问题的解决办法。

问题1:遇到闪退,或者是应用没有报错但是就是程序与sim卡之间就是没有建立连接。

解决:一般这问题是openmobileapi.jar 包版本过低,更新到最新版本编号

问题2:如果应用于卡能建立连接但是打不开通道(有openLogicalChannel和openBasicChannel),或者是session都获取不到。

解决:这个一般是测试sim卡权限没开放,需要找卡商把测试卡权限开放便可以了


Android端代码:


package com.example.testorder;


import java.io.IOException;


import org.simalliance.openmobileapi.Channel;
import org.simalliance.openmobileapi.Reader;
import org.simalliance.openmobileapi.SEService;
import org.simalliance.openmobileapi.Session;


import android.annotation.SuppressLint;
import android.app.Activity;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity implements SEService.CallBack {
private SEService seService;
NfcAdapter mNfc;
TextView mTextView;
EditText met;
Session session = null;
Channel channel = null;
String order;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNfc = NfcAdapter.getDefaultAdapter(this);
// do layout and UI stuff
setContentView(R.layout.activity_main);
mTextView = (TextView) this.findViewById(R.id.tv1);
met = (EditText) findViewById(R.id.et);
order =getResources().getString(R.string.order);
met.setText(order);
try {
// 访问SEService
seService = new SEService(this, this);
mTextView.append("seService..\n");
} catch (SecurityException e) {
mTextView.append("Binding not allowed, uses-permission SMARTCARD?");
} catch (Exception e) {
mTextView.append("Exception: " + e.getMessage());
Log.e("err", e.getMessage());
}
}


@Override
protected void onDestroy() {
if (seService != null && seService.isConnected()) {
seService.shutdown();
}
super.onDestroy();
}


public void excuCade(View view) {
// 对卡操作执行指令
byte[] respApdu = null;
try {
respApdu = channel.transmit(HexTool.hexStringToBytes(order));
} catch (IllegalStateException | IllegalArgumentException
| SecurityException | NullPointerException | IOException e) {
mTextView.append("指令失败.."+e.getMessage());
}
String data = HexTool.bytesToHexString(respApdu);
mTextView.append("指令返回值.."+data);
}


// 连接上SEService
@Override
public void serviceConnected(SEService arg0) {
mTextView.append("serviceConnected..\n");


try {
mTextView.append("Getting available readers...\n");
Reader[] readers = seService.getReaders();
// readers[1]就是内部SE
session = readers[0].openSession();
mTextView.append("打开session成功...\n");
} catch (Exception e) {
mTextView.append("打开session失败: " + e.getMessage() + "\n");
}
try {
channel = session.openLogicalChannel(HexTool
.hexStringToBytes("A000000533C000FF860000000074"));
mTextView.append("打开逻辑通道成功...\n");
} catch (Exception e) {
mTextView.append("打开逻辑通道失败: " + e.getMessage() + "\n");
}


if (channel != null)
channel.close();
if (session != null)
session.close();


}
}

具体的有dome,我已经上传,可以下载运行

版权声明:本文为博主原创文章,未经博主允许不得转载。

Telephony之PhoneInterfaceManager(原)

一、概述         PhoneInterfaceManager是一个Service,在被创建时通过ServiceManager注册自己,他作为Telephony对外的接口,可以接受其他进程向T...
  • u010961631
  • u010961631
  • 2014年10月20日 09:34
  • 4082

手机访问NFC-SIM卡的SE

使用设备:MX3, 魅蓝note 调用:       Open Mobile API 问题描述: 1.nfc手机使用Open Mobile API访问到的是内置的nfc的SE?如何才能访...
  • u010186243
  • u010186243
  • 2015年08月24日 09:31
  • 2082

Android NFC 对sim卡读写注意事项

对于Android 近场通讯 NFC的开发过程中,对sim卡进行操作的时候app可以按照以下步骤进行操作,可以避免很多问题: 1.先导入org.simalliance.openmobileapi.j...
  • qq_24224369
  • qq_24224369
  • 2016年09月27日 14:29
  • 1443

Android系统移植与调试之------->如何修改Android手机NFC模块,使黑屏时候能够使用NFC

我们都知道在不修改源代码的情况下,只能是解锁之后才能使用NFC功能。而在锁屏和黑屏2个状态下是没办法用NFC的,但是最近有个客户要求手机在黑屏状态下能够使用NFC,因此我们需要去修改Android源代...
  • qq446282412
  • qq446282412
  • 2015年10月19日 20:31
  • 3809

在Android中访问内置SE和基于SE的卡模拟(一)

2013-10-10 编写   前言 在“十问Android NFC手机上的卡模拟”文中仅仅简单的介绍了一下相关的概念,如果需要了解基于SE的卡模拟的更多细节,也就是,究竟在Android的NFC手机...
  • firefight
  • firefight
  • 2013年10月12日 09:46
  • 18512

NFC读取sim卡之建立卡连接

这里就讲建立sim卡连接的具体操作了,总结一下在建立卡连接的时候出现的问题以及对问题的解决办法。 问题1:遇到闪退,或者是应用没有报错但是就是程序与sim卡之间就是没有建立连接。 解决:一般这问题...
  • qq_24224369
  • qq_24224369
  • 2016年08月30日 17:10
  • 1797

gnugk代码解读之三:媒体通道数据和媒体控制通道数据的路由

H.245控制信令处理        在ProxyHandleThread::Exec()函数中,进入H245Socket::ReceiveData()函数中 sigSocket->HandleH...
  • vincent1941
  • vincent1941
  • 2008年03月01日 16:28
  • 842

ios开发获取SIM卡信息

1.加入一个Framework(CoreTelephony.framework). 2.引入头文件 #import #import 3.初始化 #import #import...
  • yinxianwei88
  • yinxianwei88
  • 2013年11月30日 12:58
  • 2832

移动支付NFC-SWP方案在SIM卡中的实现方法

[导读] 本文提出移动支付NFC-SWP连接方案,并使用大容量SIM卡中加以实现。文中,NFC芯片提供射频接口,负责转发射频数据给SIM卡。SIM卡则使用SWP接口实现与NFC芯片的连接。...
  • yxiaohui309
  • yxiaohui309
  • 2014年05月16日 21:00
  • 2191

OPENH323中呼叫建立过程的跟踪与分析(二)----默认方式之被叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success ...
  • gxulg
  • gxulg
  • 2005年02月23日 18:44
  • 1470
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NFC读取sim卡之建立卡连接
举报原因:
原因补充:

(最多只允许输入30个字)