Most visited

Recently visited

Added in API level 19

CardEmulation

public final class CardEmulation
extends Object

java.lang.Object
   ↳ android.nfc.cardemulation.CardEmulation


该类可用于查询NFC卡仿真服务的状态。 有关NFC卡仿真的一般介绍,请阅读NFC card emulation developer guide

使用此类需要设备上存在 FEATURE_NFC_HOST_CARD_EMULATION

Summary

Constants

String ACTION_CHANGE_DEFAULT

活动操作:要求用户更改某个类别的默认卡模拟服务。

String CATEGORY_OTHER

可用于所有其他卡模拟服务的类别。

String CATEGORY_PAYMENT

用于NFC支付服务的类别。

String EXTRA_CATEGORY

额外的 ACTION_CHANGE_DEFAULT

String EXTRA_SERVICE_COMPONENT

对象 ComponentName作为 ACTION_CHANGE_DEFAULT的额外对象传入。

int SELECTION_MODE_ALWAYS_ASK

返回值为 getSelectionModeForCategory(String)

int SELECTION_MODE_ASK_IF_CONFLICT

返回值为 getSelectionModeForCategory(String)

int SELECTION_MODE_PREFER_DEFAULT

返回值为 getSelectionModeForCategory(String)

Public methods

boolean categoryAllowsForegroundPreference(String category)

返回用户是否已允许在指定类别中注册的AID由前台应用程序首选的服务处理,而不是由预先配置的默认值处理。

List<String> getAidsForService(ComponentName service, String category)

检索服务的指定类别的当前注册的AID。

static CardEmulation getInstance(NfcAdapter adapter)

助手获得这个类的一个实例。

int getSelectionModeForCategory(String category)

返回传入类别的服务选择模式。

boolean isDefaultServiceForAid(ComponentName service, String aid)

允许应用程序查询服务当前是否为指定的ISO7816-4应用程序ID的默认处理程序。

boolean isDefaultServiceForCategory(ComponentName service, String category)

允许应用程序查询服务是否当前是处理卡模拟类别的默认服务。

boolean registerAidsForService(ComponentName service, String category, List<String> aids)

为特定服务注册特定类别的AID列表。

boolean removeAidsForService(ComponentName service, String category)

为所提供的服务删除先前注册的指定类别的AID列表。

boolean setPreferredService(Activity activity, ComponentName service)

允许前台应用程序指定在特定活动处于前台时应首选哪个卡模拟服务。

boolean supportsAidPrefixRegistration()

某些设备可能允许应用程序注册以某个前缀开头的所有AID,例如

boolean unsetPreferredService(Activity activity)

取消设置指定活动的首选服务。

Inherited methods

From class java.lang.Object

Constants

ACTION_CHANGE_DEFAULT

Added in API level 19
String ACTION_CHANGE_DEFAULT

活动操作:要求用户更改某个类别的默认卡模拟服务。 这将显示,询问他是否愿意与指定的组件名称标识的服务,以取代目前的默认服务用户的对话EXTRA_SERVICE_COMPONENT ,在指定的类别EXTRA_CATEGORY

常量值:“android.nfc.cardemulation.action.ACTION_CHANGE_DEFAULT”

CATEGORY_OTHER

Added in API level 19
String CATEGORY_OTHER

可用于所有其他卡模拟服务的类别。

常数值:“其他”

CATEGORY_PAYMENT

Added in API level 19
String CATEGORY_PAYMENT

用于NFC支付服务的类别。

常数值:“付款”

EXTRA_CATEGORY

Added in API level 19
String EXTRA_CATEGORY

额外的 ACTION_CHANGE_DEFAULT类别。

也可以看看:

常数值:“类别”

EXTRA_SERVICE_COMPONENT

Added in API level 19
String EXTRA_SERVICE_COMPONENT

对象 ComponentName作为 ACTION_CHANGE_DEFAULT的额外对象传入。

也可以看看:

常量值:“组件”

SELECTION_MODE_ALWAYS_ASK

Added in API level 19
int SELECTION_MODE_ALWAYS_ASK

返回值为 getSelectionModeForCategory(String)

在此模式下,当使用 HostApduServiceOffHostApduService ISO-DEP卡仿真时,无论何时选择此类别的应用程序ID(AID),都会询问用户要使用哪个服务来处理事务,即使只有一个匹配服务。

常数值:1(0x00000001)

SELECTION_MODE_ASK_IF_CONFLICT

Added in API level 19
int SELECTION_MODE_ASK_IF_CONFLICT

返回值为 getSelectionModeForCategory(String)

在此模式下,当使用HostApduServiceOffHostApduService使用ISO-DEP卡模拟时,如果阅读器选择的应用程序ID(AID)已由多个服务注册,则只会要求用户选择服务。 如果只有一个注册了AID的服务,那么该服务将被直接调用。

常量值:2(0x00000002)

SELECTION_MODE_PREFER_DEFAULT

Added in API level 19
int SELECTION_MODE_PREFER_DEFAULT

返回值为 getSelectionModeForCategory(String)

在此模式下,用户已为此类别设置了默认服务。

HostApduServiceOffHostApduService使用ISO-DEP卡仿真时,如果远程NFC设备选择默认服务已在此类别中注册的任何应用程序ID(AID),则该服务将自动被绑定以处理事务。

常量值:0(0x00000000)

Public methods

categoryAllowsForegroundPreference

Added in API level 21
boolean categoryAllowsForegroundPreference (String category)

返回用户是否已允许在指定类别中注册的AID由前台应用程序首选的服务处理,而不是由预先配置的默认值处理。 前台应用程序可以使用setPreferredService(Activity, ComponentName)方法设置此类首选项。

Parameters
category String: The category, e.g. CATEGORY_PAYMENT
Returns
boolean whether AIDs in the category can be handled by a service specified by the foreground app.

getAidsForService

Added in API level 21
List<String> getAidsForService (ComponentName service, 
                String category)

检索服务的指定类别的当前注册的AID。

请注意,这只会返回使用registerAidsForService(ComponentName, String, List)方法动态注册的registerAidsForService(ComponentName, String, List) 它将*不*返回在清单中静态注册的AID。

Parameters
service ComponentName: The component name of the service
category String: The category for which the AIDs were registered, e.g. CATEGORY_PAYMENT
Returns
List<String> The list of AIDs registered for this category, or null if it couldn't be found.

getInstance

Added in API level 19
CardEmulation getInstance (NfcAdapter adapter)

助手获得这个类的一个实例。

Parameters
adapter NfcAdapter: A reference to an NfcAdapter object.
Returns
CardEmulation

getSelectionModeForCategory

Added in API level 19
int getSelectionModeForCategory (String category)

返回传入类别的服务选择模式。 有效的返回值是:

SELECTION_MODE_PREFER_DEFAULT该用户已请求此类别的默认服务,这将是首选。

SELECTION_MODE_ALWAYS_ASK用户每次都要求询问他希望在此类别中使用何种服务。

SELECTION_MODE_ASK_IF_CONFLICT如果存在冲突,则只会要求用户选择服务。

Parameters
category String: The category, for example CATEGORY_PAYMENT
Returns
int the selection mode for the passed in category

isDefaultServiceForAid

Added in API level 19
boolean isDefaultServiceForAid (ComponentName service, 
                String aid)

允许应用程序查询服务当前是否为指定的ISO7816-4应用程序ID的默认处理程序。

Parameters
service ComponentName: The ComponentName of the service
aid String: The ISO7816-4 Application ID
Returns
boolean whether the service is the default handler for the specified AID

需要 NFC权限。

isDefaultServiceForCategory

Added in API level 19
boolean isDefaultServiceForCategory (ComponentName service, 
                String category)

允许应用程序查询服务是否当前是处理卡模拟类别的默认服务。

请注意,如果getSelectionModeForCategory(String)返回SELECTION_MODE_ALWAYS_ASKSELECTION_MODE_ASK_IF_CONFLICT ,则此方法将始终返回false。 这是因为在这些选择模式中,不能在类别级别设置默认值。 对于选择模式为SELECTION_MODE_ALWAYS_ASKSELECTION_MODE_ASK_IF_CONFLICT ,请使用isDefaultServiceForAid(ComponentName, String)来确定服务是否为特定AID的默认值。

Parameters
service ComponentName: The ComponentName of the service
category String: The category
Returns
boolean whether service is currently the default service for the category.

需要 NFC权限。

registerAidsForService

Added in API level 21
boolean registerAidsForService (ComponentName service, 
                String category, 
                List<String> aids)

为特定服务注册特定类别的AID列表。

如果此类服务的AID列表先前已为此服务注册(通过清单静态地或通过使用此API动态注册),那么此AID列表将替换为该列表。

请注意,您只能注册与此API的调用者使用相同UID下运行的服务的AID。 通常这意味着您需要从与服务本身相同的包中调用此服务,但UID也可以在使用共享UID的包之间共享。

Parameters
service ComponentName: The component name of the service
category String: The category of AIDs to be registered
aids List: A list containing the AIDs to be registered
Returns
boolean whether the registration was successful.

removeAidsForService

Added in API level 21
boolean removeAidsForService (ComponentName service, 
                String category)

为所提供的服务删除先前注册的指定类别的AID列表。

请注意,这只会删除使用registerAidsForService(ComponentName, String, List)方法动态注册的registerAidsForService(ComponentName, String, List) 它将*删除在清单中静态注册的AID。 如果使用此方法删除动态注册的AID,并且清单中存在相同类别的静态注册的AID组,则静态AID组将再次变为活动状态。

Parameters
service ComponentName: The component name of the service
category String: The category of the AIDs to be removed, e.g. CATEGORY_PAYMENT
Returns
boolean whether the group was successfully removed.

setPreferredService

Added in API level 21
boolean setPreferredService (Activity activity, 
                ComponentName service)

允许前台应用程序指定在特定活动处于前台时应首选哪个卡模拟服务。

指定的活动目前必须处于恢复状态。 一个很好的范例是调用此方法在你onResume() ,并呼吁unsetPreferredService(Activity)onPause()

此方法调用将在两种特定情况下失败:

  • If the service registers one or more AIDs in the CATEGORY_PAYMENT category, but the user has indicated that foreground apps are not allowed to override the default payment service.
  • If the service registers one or more AIDs in the CATEGORY_OTHER category that are also handled by the default payment service, and the user has indicated that foreground apps are not allowed to override the default payment service.

使用 categoryAllowsForegroundPreference(String)来确定前台应用程序是否可以覆盖默认支付服务。

请注意,此首选项不会由操作系统持久保存,因此每次恢复活动时都必须调用该首选项。

Parameters
activity Activity: The activity which prefers this service to be invoked
service ComponentName: The service to be preferred while this activity is in the foreground
Returns
boolean whether the registration was successful

supportsAidPrefixRegistration

Added in API level 21
boolean supportsAidPrefixRegistration ()

某些设备可能允许应用程序注册以某个前缀开头的所有AID,例如“A000000004 *”以注册所有的MasterCard AID。 使用此方法确定此设备是否支持注册AID前缀。

Returns
boolean whether AID prefix registering is supported on this device.

unsetPreferredService

Added in API level 21
boolean unsetPreferredService (Activity activity)

取消设置指定活动的首选服务。

请注意,指定的活动在此次通话时仍然处于恢复状态。 调用此方法的一个好地方是在您的onPause()实现中。

Parameters
activity Activity: The activity which the service was registered for
Returns
boolean true when successful

Hooray!