- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为 NFC 创建一个应用程序,我的第一个目标是从 mifare 标签获取标签 uid。当我按下标签按钮时,我的 Activity 转到第二个 Activity ,我应该在其中获取标签 ID。
我收到资源查找错误。我知道我犯了一些重大错误,但找不到。
请求您的帮助。
这是我的 Meanifest 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.chetan.nfc"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10"></uses-sdk>
<uses-feature android:required="true" android:name="android.hardware.nfc"></uses-feature>
<uses-permission android:name="android.permission.NFC"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true">
<activity android:name=".actOne"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="taginfo" android:label="@string/app_name" android:launchMode="standard">
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:resource="@xml/nfc_tech_filter" android:name="@string/nfc_tech_filter"></meta-data>
</activity>
</application>
</manifest>
这是我的 Activity 之一:
package com.chetan.nfc;
import java.util.Date;
import android.app.Activity;
import android.app.LauncherActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.nfc.NfcAdapter;
import android.nfc.tech.NdefFormatable;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class actOne extends Activity {
/** Called when the activity is first created. */
Button tag;
Intent i;
TextView tv;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tag=(Button)findViewById(R.id.Tag);
tv=(TextView)findViewById(R.id.textView1);
tag.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
i=new Intent(v.getContext(),taginfo.class);
startActivity(i);
//launchActivity();
}
});
}
}
这是我的 Activity 2
package com.chetan.nfc;
import java.io.IOException;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter.MalformedMimeTypeException;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
public class taginfo extends Activity{
TextView tv;
EditText tagIntent;
Log log;
IntentFilter mFilters[];
String mTechLists[][];
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.tagdata);
tagIntent=(EditText)findViewById(R.id.editText1);
tv=(TextView)findViewById(R.id.textView1);
tv.setText(getIntent().toString());
log.e("before get intetn", "");
readTag(getIntent());
}
public void readTag(Intent intent)
{
//tagIntent.setText(intent.getAction());
PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
NfcAdapter nfc_adapter=NfcAdapter.getDefaultAdapter(this);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
tagIntent.setText("");
tagIntent.setText(tagId.toString());
}
}
最佳答案
如果错误是关于“我收到资源查找错误”,则与 NFC 无关。
使用此代码,您可以正确获取标签的 UID
.
.
.
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.d(TAG, "UID: " + bin2hex(tag.getId()));
.
.
.
//To display the UID
static String bin2hex(byte[] data) {
return String.format("%0" + (data.length * 2) + "X", new BigInteger(1,data));
}
关于android - 读取 Mifare 经典卡的标签 UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910931/
在多个 Android 设备上,Mifare DESFire 通信被路由到 HCE 而不是脱离主机 (UICC)。 通过基于 OMAPI 与脱离主机安全元素的通信,我已经学会了如何将 AID 添加到
我需要使用 WinSCard 读取 MiFare 卡的序列号。我能够从 MiFare 卡读取 7B UID。 The confusion is that i dont know if the UID
如何从使用 MIFARE 应用程序目录结构格式化的 MIFARE Classic 卡进行身份验证和读取数据?我正在使用 Android。 最佳答案 请参阅 NXP 关于 MIFARE Applicat
除了 NXP 网站上显示的关于 mifare plus 和 mifare desfire 的内容外,还要考虑以下因素: 安全 阅读速度 如果贴上铁氧体层可以贴在手机上,哪个更好? 如果我们将来要进入支
是否有可靠的方法来确定 RFID 卡是 Mifare Ultralight 还是 Mifare Ultralight C? 到目前为止,我发现的唯一方法是利用这两张卡的大小差异,发出超出较小卡边界的读
我正在 android 中使用 nfc,我想知道发现的标签是 Mifare Classic 还是 Mifare Ultralight 还是其他任何标签。请告诉我该怎么做? 最佳答案 尝试 String
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我正在尝试将 PN532 配置为 Mifare 仿真模式。我使用“ACR122U”读卡器进行 Mifare 仿真,使用“OMNIKEY CardMan 5x21-CL”作为读卡器。我成功地将 ACR1
假设我想对 Mifare Classic 进行身份验证。 我如何知道要发送到卡的确切类型的 APDU? 例子。 这段代码: bcla = 0xFF; bins = 0x86; bp1 = 0x0;
[ 请在您的答案中仅考虑 1k 经典卡。 ] 我希望获得一些 RFID 领域的行业知识。具体来说,使用 MIFARE MAD(Mifare 应用程序目录)。我通过查看位于此处的 NXP 发布的 MIF
我知道这篇文章:- Locking mechanism of Mifare Classic 1K 但是,确实不清楚 - 如何在此字符串中计算像 FF 07 80 FF 这样的值: D3 F7 D3 F
[ 请在您的答案中仅考虑 1k 经典卡。 ] 我希望获得一些 RFID 领域的行业知识。具体来说,使用 MIFARE MAD(Mifare 应用程序目录)。我通过查看位于此处的 NXP 发布的 MIF
基于 this article ,我正在尝试模拟 mifare 卡在 android 上管理 APDU。根据 APDU 接收,我的应用程序应该回答正确的 APDU,从而模拟 mifare 行为。 使用
好的,我已经开发了一个与 Mifare Classic 智能卡(非接触式)通信的应用程序。 该应用程序将用于成员(member)身份识别。 目前的方法是将一个 16 字节的值写入卡的 block 4。
有没有办法将 DESFire 卡重置为原始状态?是否有格式化和删除所有内容的命令? 我读到 DeleteApplication apdu 命令删除了应用程序及其文件,但空间仍然不可用。 谢谢。 最佳答
这个问题已经有答案了: Reading Mifare Classic returns strange characters (2 个回答) 已关闭 4 年前。 当我从一个 block 读取 Mifar
我编写了一个简单的应用程序 (C#),以便通过我的智能卡读卡器在我的 Mifare 卡上执行一些 I/O 操作(显然,我使用了一些 Win API 包装)。 我得到的关于 mifare 的唯一信息是“
我使用以下命令来执行我的 Mifare Classic 1K 卡的转储: mfoc -O my_dump.mdf 然后我使用以下命令将转储写入空白卡: nfc-mfclassic w A my_dum
我有一个 MIFARE 1K 标签。某些块可以使用身份验证 key A 写入/读取,而其他块可以使用身份验证 key B 写入。 为什么?例如,如何使用键 A 更改要写入/读取的所有块? 比如我可以用
上周我一直在尝试使用具有默认 key (00000000h) 的 MIFARE DESFire EV1 卡进行身份验证,但无济于事。我关注了this blog对信的指示。我实现了Send mode C
我是一名优秀的程序员,十分优秀!