我们如何访问Android手机中的安全元素.基本上我需要存储一些安全数据并检索它,我只希望我的应用程序访问这些数据.请让我知道这些步骤.
我正在编写一些支持NFC的应用程序.我现在在平板电脑上有两个,如果检测到NFC标签并且它们尚未打开,它们将启动.因为我现在在同一台设备上有两个,所以我得到一个App Picker对话框.这很棒.
我想要的是,如果其中一个应用程序已经打开,那么当检测到NFC标签时,它不会显示应用程序选择器,而只是使用当前活动来处理NFC意图.这怎么可能?谢谢
我想开发一个写入nfc标签有效负载的android程序,然后在写入命令后回读标签信息以验证写入.但是,似乎需要删除并重新输入标签到NFC字段以刷新意图以便回读写入信息.这有可能在一次触摸中实现吗?
或者任何人都知道背景中的详细过程解释了为什么我需要第二次触摸才能回读?据我所知,当屏幕解锁时,Android设备正在查询NFC标签,这是否意味着它会继续在NFC领域读取标签?
提前致谢!
我正在尝试在我的Android应用程序中阅读恩智浦开发的NFC标签.可以使用Android读取标签:NXP的应用程序和另一个正确读取它.
确切的标签类型是"ICODE SLI-L(SL2ICS50)",RF技术是"Type V/ISO 15693"(从这些工作应用中获取的数据).存储器由2个页面组成,每个页面有4个块,每个块有4个字节 - 我只想将整个数据存储在存储器中.
标签必须使用Android的NfcV类处理,标签的数据表在这里可用,但很难找到使用的任何工作代码示例NfcV.我尝试了几个由数据表自己总结的东西,并尝试了我在谷歌找到的PDF中的通信样本,但没有任何效果.
我的活动中的相应方法(我使用NFC Foreground Dispatch)如下所示:
public void onNewIntent(Intent intent) {
android.nfc.Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV tech = NfcV.get(tag);
try {
tech.connect();
byte[] arrByt = new byte[9];
arrByt[0] = 0x02;
arrByt[1] = (byte) 0xB0;
arrByt[2] = 0x08;
arrByt[3] = 0x00;
arrByt[4] = 0x01;
arrByt[5] = 0x04;
arrByt[6] = 0x00;
arrByt[7] = 0x02;
arrByt[8] = 0x00;
byte[] data = tech.transceive(arrByt);
// Print …Run Code Online (Sandbox Code Playgroud) 我有Mifare Standard 1k卡的问题.我在00000001FFFFFFFE0000000100FF00FF地址为62的数据块上创建了一个值块(- 有效?).值块的值应为1,值块的地址为0.
我已将数据块2的访问位更改为:
其他2个数据块具有工厂访问位.扇区预告片的访问位也发生了变化,它们是:
因此,相应扇区(第16扇区)的访问位是3B478C69(有效?).
问题是我不能对该块执行任何值块特定功能(递增,递减等),我总是得到6A81响应 - >"卡被阻止或命令不受支持".我正在使用的APDU是FFF5C13E0400000001.
我正在使用NdefFormatable类来格式化我的NFC卡.代码如下:
NdefFormatable formatable=NdefFormatable.get(tag);
Run Code Online (Sandbox Code Playgroud)
但是我将formtable reference作为null.我检查了在get(tag)方法中运行的代码.它检查:
if (!tag.hasTech(TagTechnology.NDEF_FORMATABLE)) return null;
Run Code Online (Sandbox Code Playgroud)
我为我的标签运行了"tag.getTechList()".我有:
android.nfc.tech.NfcA
android.nfc.tech.Ndef
Run Code Online (Sandbox Code Playgroud)
我能够使用Trigger应用程序格式化此卡.
可以做些什么来格式化这个.
我正在编写一个需要阅读NFC标签的应用程序.而不是通过意图过滤器阅读标签打开新应用程序的行为,我希望我当前打开的应用程序只是阅读附近的标签.
我试过使用enableForegroundDispatch()但没有运气.只要有NFC标签,我的设备就会打开标准的"标签"应用程序.
我到目前为止的代码是:
final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
IntentFilter[] filters = new IntentFilter[1];
String[][] techList = new String[][]{};
filters[0] = new IntentFilter();
filters[0].addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
filters[0].addCategory(Intent.CATEGORY_DEFAULT);
try {
filters[0].addDataType(MIME_TEXT_PLAIN);
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("Check your mime type.");
}
adapter.enableForegroundDispatch(activity, pendingIntent, filters, techList);
Run Code Online (Sandbox Code Playgroud)
(这基本上是从我发现的教程中复制的).
有谁知道这是否是正确的解决方法?如何防止标准"标签"应用程序打开而不是我自己的应用程序接收NDEF_DISCOVERED意图.
谢谢
我正在尝试从我的pcsc java代码中读取卡UID/HCE android设备UID.但我收到以下错误
javax.smartcardio.CardException: sun.security.smartcardio.PCSCException: Unknown error 0x1f
Run Code Online (Sandbox Code Playgroud)
虽然当我尝试获取UID时我能够获得ATS位但是我得到了这个错误.我从这里提到了我的代码
码
import java.io.Console;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;
import javax.smartcardio.ATR;
import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.CommandAPDU;
import javax.smartcardio.ResponseAPDU;
import javax.smartcardio.TerminalFactory;
public class PCSC {
private byte[] atr = null;
private String protocol = null;
private byte[] historical = null;
public CardTerminal selectCardTerminal() {
try {
// show the list of available terminals
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
ListIterator<CardTerminal> terminalsIterator …Run Code Online (Sandbox Code Playgroud) 我尝试将ACR122集成到我的Android应用程序中.我正在使用ACS提供的ANDROID库(http://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/).
一切正常,我可以检测到卡的存在,但我想提取卡的UID/ID.有人知道这样做的功能吗?
你有这种集成的例子吗?
我正在为带有RFID阅读器RC522的Android Things设备开发软件.我使用这个库:https://github.com/Galarzaa90/android-things-rc522
我的任务是查询RC533 RFID阅读器:
protected Boolean doInBackground(Object... params) {
mRc522.stopCrypto();
while (true) {
........
byte[] uuid = mRc522.getUid();
return mRc522.selectTag(uuid);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的活动中,我使用它将UID值转换为字符串:
String tagRC522 = toHexString(mRc522.getUid(), "")
Run Code Online (Sandbox Code Playgroud)
我们生态系统中的另一个应用程序用于扫描Android智能手机上的NFC标签:
public void onNewIntent(Intent intent) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
String tagNFC = bytesToHex(tagFromIntent.getId());
....
}
Run Code Online (Sandbox Code Playgroud)
Play商店中的其他应用程序(例如NFC工具)提供与上述智能手机应用程序代码相同的结果.
我现在面临的问题是tagRC522(使用RC522的Android Things设备上的值)与值tagNFC(在智能手机应用程序中)不匹配.
Tag1
tagRC522 = 45DOD86528
tagNFC = 45DOD865
Tag2
tagRC522 = 3567500103
tagNFC = 35675001
Tag3
tagRC522 = 88046f12F1
tagNFC = 046F12CA193A84
Tag4
tagRC522 = …