首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android NFC/HCE服务在选择AID时返回0x6F00 (无精确诊断)

Android NFC/HCE服务在选择AID时返回0x6F00 (无精确诊断)
EN

Stack Overflow用户
提问于 2014-09-26 20:45:21
回答 1查看 1.1K关注 0票数 0

我已经创建了一个具有F0123412349999 I的HCE服务。根据Android文档,我需要发送一个选择的APDU,这样HCE服务将知道将以下消息重定向到哪个服务。这是我在成功连接后发送到电话的APDU:

代码语言:javascript
运行
复制
{ 0x00, //CLA 
  0xA4, //INS
  0x00, //P1 
  0x07, //P2
  0x07, //Lc Length Content
  0xF0, //Data (AID)
  0x12, 
  0x34, 
  0x12,
  0x34, 
  0x99, 
  0x99, 
  0x00  //Length of data expected
};

传输是成功的,但无论我做什么,android手机都会返回0x6f00。这被翻译成“没有精确诊断”。我不知道哪里出了问题,显然错误信息有点模糊。以下代码是我的HCE服务:

代码语言:javascript
运行
复制
public class MyHostApduService extends HostApduService {

    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
        Log.i("HCE service", "processCommandApdu");

            byte[] answer = new byte[2];
            answer[0] = (byte) 0x90;
            answer[1] = (byte) 0x00;
        return answer;
    }

    @Override
    public void onDeactivated(int reason) {
        Log.i("HCE service", "Deactivated: " + reason);
    }

    @Override
    public void onCreate() {
        Log.i("HCE service", "Created");
    }
}

以及AID登记:

代码语言:javascript
运行
复制
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/app_name"
    android:requireDeviceUnlock="false" >

    <aid-group
        android:category="other"
        android:description="@string/app_name" >
        <aid-filter android:name="F0123412349999" />
        <aid-filter android:name="F0394148148100" />
    </aid-group>
</host-apdu-service>

及舱单登记:

代码语言:javascript
运行
复制
   <service
            android:name=".MyHostApduService"
            android:exported="true"
            android:permission="android.permission.BIND_NFC_SERVICE" >
            <intent-filter>
                <action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
            </intent-filter>

            <meta-data
                android:name="android.nfc.cardemulation.host_apdu_service"
                android:resource="@xml/apduservice" />
        </service>

我用来阅读安卓手机的阅读器是ACR122阅读器。这款手机是宏达电手机。有一件事让我感到奇怪,那就是手机与读者联系时发送的ATR,它是0x3B80800101。我认为这会更大,包含更多的信息,但我可能错了。

我可以更改/修复什么使android将我的消息发送到我的HCE服务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-27 18:28:49

您要发送到电话的SELECT APDU中的参数P1和P2的值可能无效。尝试以下几点:

P1 = 0x04

P2 = 0x00

您可以在一个名为“卡片规范”的文档中检查SELECT命令的所有参数,该文档由行业联盟Global发布。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26068027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档