首页 > 编程知识 正文

android读取手机nfc卡号Android 读取NFC卡号,苹果手机读取nfc卡片

时间:2023-05-04 13:19:38 阅读:223512 作者:1142

1. menifest文件中需要添加:

android:name="android.hardware.nfc"android:required="true" />在activity中添加:2. 初始化时代码:Intent nfcIntent = new Intent(this, getClass());nfcIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);PendingIntent.getActivity(this, 0,nfcIntent , 0);if (mAdapter == null) {Toast.makeText(getApplicationContext(), "NFC feature is supported on this device.", Toast.LENGTH_SHORT).show();return;}需要Override的函数:private NfcAdapter mAdapter;private PendingIntent mPendingIntent;@TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1)protected void onResume() {super.onResume();}@Overrideprotected void onNewIntent(Intent intent){getTagInfo(intent);}@TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1)private void getTagInfo(Intent intent) {Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);byte[] tagId = tag.getId();String str = ByteArrayToHexString(tagId);str = flipHexStr(str);Long cardNo = Long.parseLong(str, 16);String ignoreOperationId = m_operationid;if(m_isOnline){// if select all , pass in the operation id encoded in ticket// there should NOT be many operations, take the only onenew CardValidationAsyncTask().execute(cardNo.toString());}}@TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1)@Overrideprotected void onPause() {super.onPause();if (mAdapter != null) {}}private String flipHexStr(String s){for (int i = 0; i <=s.length()-2; i=i+2) {result.append(new StringBuilder(s.substring(i,i+2)).reverse());}return result.reverse().toString();}private String ByteArrayToHexString(byte[] inarray) {int i, j, in;String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A","B", "C", "D", "E", "F" };String out = "";for (j = 0; j < inarray.length; ++j) {in = (int) inarray[j] & 0xff;i = (in >> 4) & 0x0f;out += hex[i];i = in & 0x0f;out += hex[i];}return out;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。