我正在尝试使用新的android设备和nfc标签,在那里我编写了一个非常简单的应用程序来检测nfc标签。但是我尝试了一下,但是在扫描标签时无法让我的设备开始活动。这是我所拥有的:
最简单的活动:
public class NFCIntentDispatch extends Activity{
private TextView mText;
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.intent_dispatch);
mText = (TextView) findViewById(R.id.text);
}
}
Run Code Online (Sandbox Code Playgroud)
和menifest.xml
<activity android:name="NFCIntentDispatch">
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
res / xml下的nfc_tech_filter.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>
Run Code Online (Sandbox Code Playgroud)
问题:
每当扫描标签时,我的设备(Nexus S 2.3.3)只会启动名为“已收集新标签”的内置活动,而从不显示选择或开始我的活动。知道为什么会这样,谢谢您的帮助。
我正面临着java.lang.NoSuchMethodError: android.nfc.NdefRecord.createUri这段代码的异常:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext());
try {
if (mNfcAdapter == null) {
} else {
NdefRecord uriRecord = NdefRecord.createUri(someUri);
NdefMessage msg = new NdefMessage(new NdefRecord[] {uriRecord});
mNfcAdapter.setNdefPushMessage(msg, this);
}
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "initNfcNdefMessage()", e);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,initNfcNdefMessage 不会在堆栈跟踪中打印.这怎么可能?
我有一些 ISO15693 / Tag-it HF-I Plus 芯片,需要在上面写点东西。这些芯片是完全新鲜的,我现在读了很多 pdf 告诉我的都是一样的。但是没有任何效果,我一直收到 Transceive Failed 错误。
我在收发命令中发送这些数据:
Byte: <data>
0: 0x00 // pdf says the tag understands only flag = 0x00
1: 0x21 // write single block
2-10: ID // needs to be send for this tag, only supports addressed mode
11: 0x00 // Block ID, try to write to block 0
12-16: DATA // LSB First
17-18: CRC16 // do i need to send this? and if yes, LSB first?
Run Code Online (Sandbox Code Playgroud)
我尝试了非常不同的标志和写入模式,但它们都不起作用:
Flags: 0x01, …Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能做到以下几点;
我想要一个与我正在开发的Android应用程序一起使用的nfc标签.
如果我刷标签并且我的应用程序安装在手机上,我想从标签中读取纯文本数据.没有什么比999更多的数字.
但是如果没有安装我的应用程序,我希望标签打开Web浏览器并重定向到可以下载它的链接?
这有可能与android已经开始阅读意图的方式有关吗?
从我对它的理解(我不是在nfc的专业人士)你只能做其中一个?
还是我错了?
编辑:
有没有办法在没有在Play商店加载应用程序的情况下这样做?这是一个大学项目,我不认为如果我公开项目,他们会很高兴.我希望将它们带到一个链接,您可以下载.apk
我是新来的NFC Android和我一直在坚持了几天试图获得第4页至第7页NTAG212的Mifare超轻与验证,我已经有PWD和包装做PWD_AUTH基础上,NTAG212文档.
我这样做...
//assume password as array of bytes
//assume pack as array of bytes
try{
nfc.connect();
byte[] cmd1 = nfc.transceive(new byte[]{ (byte) 0x30, (byte) 0x00 }); //read the page 0 to make the NFC active
nfc.transceive(new byte[]{
(byte) 0x1B, //command for PWD_AUTH
pass[0],
pass[1],
pass[2],
pass[3]
});
byte[] cmd4 = nfc.transceive(new byte[]{ (byte) 0x30, (byte) 0x04 }); //read the page 4
}catch(TagLostException e){
e.printStackTrace();
}catch(IOException e){
e.printStachTrace();
}finally{
try{
nfc.close();
}catch(Exception e){
//display …Run Code Online (Sandbox Code Playgroud) 我正在开发一个将部署在支持 NFC 的设备上的应用程序。我正在尝试使用 NFC 启用身份验证,以便用户可以扫描另一个 NFC 设备(例如手机)进行身份验证。
我浏览了 Android 在http://developer.android.com/guide/topics/connectivity/nfc/nfc.html 上的 NFC 文档
我无法让我的用例工作。这是我想要做的:
我希望在 Android 中使用 NFC 是可能的。我的搜索使我找到了在检测到 NFC 时启动应用程序的示例,但这不是我所追求的。
我是NFC的新手,我想了解更多关于此的信息,所以我从Adafruit购买了一个PN532 NFC屏蔽和一些Mifare 1K卡.
现在我在Windows 8上成功安装了Libnfc,它工作正常,我可以使用nfc-list.
我试图安装libfreefare但我有错误(我已经发布了一个主题)
但我真的需要能够将卡格式化为NDEF,并在MIFARE Classic 1K卡上读取和写入NDEF数据.
有谁知道怎么做?是否可以使用libnfc.dll这样做?有没有人有这方面的例子或教程?
为安全起见,为了确保我的卡是安全的(不能被覆盖),最好使用DESFire 4k或8k而不是MIFARE Classic 1k吗?
如何从使用MIFARE应用程序目录结构格式化的MIFARE Classic卡进行身份验证和读取数据?我正在使用Android.
当用Android读取MIFARE卡并将数据转换为UTF-8时,我会收到类似 的奇怪字符.我正在尝试构建一个可以读取我们正在使用的某种身份证的应用程序.现在的问题是,我在单词之间得到奇怪的字符,有些单词在块之间分开,那么我怎样才能安全地得到一个我正在寻找的单词呢?例如,我的读数是这样的:
43224 19032019 第2块sektor 2 bindex:8
并且在拆分时,从19开始的数字的其余部分位于新块:
meName M 19
在块1 sektor 1 bindex:4
930402NO934951
在块2 sektor 1 bindex:4
c5 42 4e 49 44 00 07 4f 4f 4f 4f 4f 4f 00 4b 42 "Åbnid" "OOOOOO" "KB" 44 44 44 20 44 44 44 44 44 00 82 4d 00 c9 31 39 "DDD DDDDD" "M" "19" 39 34 34 33 34 32 00 d0 4e 4f 39 36 36 36 35 31 "944342" "NO966651" 00 00 00 …