Android HCE开发配置AID响应关系总结

开发HCE功能必须使用到HostApduService,在使用HostApduService时需要配置HostApduService的对应AID,同一个手机可能安装多个HCE APP,或者同一个APP包含多个HostApduService,这时候就需要搞清楚配置的AID和对应的HostApduService之间的响应向后问题。

首先介绍一下关于HostApduService的AID配置问题,AID有两种模式:other和payment

第一种

<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:apduServiceBanner="@drawable/icon"
    android:description="@string/servicedesc"
    android:requireDeviceUnlock="false" >
    <!--
          可以通过指定多个aid-filter,来注册多个AID。
          category可以指定为 other 或者 payment。
          requireDeviceUnlock为false的时候,可以在锁屏状态下完成处理,为true的时候,则会要求用户解锁屏幕。
    -->
    <aid-group
        android:category="other"
        android:description="@string/app_name" >
        <aid-filter android:name="@string/AID1" />
    </aid-group>

</host-apdu-service>

第二种

<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:apduServiceBanner="@drawable/alipay"
    android:description="@string/servicedesc"
    android:requireDeviceUnlock="false" >

    <!--
          可以通过指定多个aid-filter,来注册多个AID。
          category可以指定为 other 或者 payment。
          requireDeviceUnlock为false的时候,可以在锁屏状态下完成处理,为true的时候,则会要求用户解锁屏幕
    -->

    <aid-group
        android:category="payment"
        android:description="@string/app_name" >
        <aid-filter android:name="@string/AID2" />
    </aid-group>

</host-apdu-service>

下面我们来详细说明一下关于不同模式下的AID响应问题(前提:一个手机,手机上有A、B两个HCE APP,通过读卡器向手机发送APDU选择指令)

1、A和B的应用AID设置的都是payment模式,

只有手机当前选定的默认支付APP会响应,另外一个APP的AID选择指令是不会响应的。

2、A和B的应用AID设置的都是other模式,

当A和B的AID是相同的时候系统会弹出对话框,列出A和B,让用户选择。

如果A和B的AID不同,那么两个APP之间没有相互影响。

3、A和B的应用AID设置的分别是payment(A)和other(B)模式,

如果A和B的AID相同,那么只有A会响应选择指令。

如果A和B的AID不同,那么两者之间不会相互影响

最后将如何判断当前HCE应用是否是默认支付程序以及如何设置成默认支付程序的方法贡献给大家

	private void checkIsDefaultApp() {
		CardEmulation cardEmulationManager = CardEmulation.getInstance(NfcAdapter.getDefaultAdapter(this));
		ComponentName paymentServiceComponent = new ComponentName(getApplicationContext(), CardMangerService.class.getCanonicalName());
		if (!cardEmulationManager.isDefaultServiceForCategory(paymentServiceComponent, CardEmulation.CATEGORY_PAYMENT)) {
			Intent intent = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
			intent.putExtra(CardEmulation.EXTRA_CATEGORY,CardEmulation.CATEGORY_PAYMENT);
			intent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT,paymentServiceComponent);
			startActivityForResult(intent, 0);
			L.d("TAG","当前应用不是默认支付,需手动设置");
		} else {
			L.d("TAG","当前应用是系统默认支付程序");
		}
	}
时间: 2024-11-07 14:05:00

Android HCE开发配置AID响应关系总结的相关文章

Android环境开发配置

1.首先下载并配置jdk 安装完后打开系统环境变量设置, a.系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录 b.系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原来Path的变量值末尾有没有;号,如果没有,先输入:号再输入上面的代码) c.系统变量→新建 CLASSPATH 变量变量值填写 .%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前

Android Studio开发配置NDK环境

今天使用Fresco的一个demo,但是build失败,去网上搜了一下,发现是NDK环境没配置好,见如下链接: 配置NDK见如下链接: 配置NDK环境

PhoneGap与Jquery Mobile组合开发android应用的配置

PhoneGap与Jquery Mobile结合开发android应用的配置 由于工作需要,用到phonegap与jquery moblie搭配,开发android应用程序. 这些技术自己之前也都没接触过,可以说是压根没听说过,真是感慨,在开发领域,技术日新月异,知识真是永远学不完的.就算是做java开发的,可是细分下来,专业方向还是很多的:自己没有涉及的技术还是太多了,自个需要对单个领域专业点,知识丰富点.做不了全才,那咱做个专才,在如今社会还是必须的. 好了,咱们言归正传: PhoneGap

配置Android应用开发环境

一.安装JDK 开发 Android应用程序的时候,仅有Java运行环境(Java Runtime Environment,JRE)是不够的,需要完整的JDK(JDK包含了JRE),且要求其版本在JDK 6以上,在开发Android 5及更高版本时,需要JDK 7及其以上版本. 如果JDK不可用或版本低于JDK 6,要下载Java SE开发工具包7 . 使用JDK 7及以上版本无需再对环境变量进行设置. 若安装JDK 6,需要在cmd下使用Java命令和编译.运行程序,可以配置环境变量(具体步骤

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

Unity3D Android手机开发环境配置

Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载 进入下一页,选择对应你系统的版本,继续下载. 32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本. 下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样 为了方便我们把

(转)Unity3D Android手机开发环境配置,可真机发布调试

此方法配置好,在可以在unity直接发布到手机上,并可以实时调试. 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载  进入下一页,选择对应你系统的版本,继续下载.    32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本.  下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样  为了方便我们把它们让入ad

Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二

开始部署 上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例. -------------------------------------------------------------------------------------------------------------------- Daydream快速入门开发基础教程一:Android端开发环境配置一 http://blog.csdn.net/jaikydota163/arti

Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常

消除SDK更新时的“https://dl-ssl.google.com refused”错误 消除SDK更新时,有可能会出现这样的错误:Download interrupted: hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com>Download interrupted: Connection to https://dl-ssl.google.com refusedDone. N