Java CardEmulation似乎正常,但未接收字节[]
打印出来的所有日志都很好,但这东西不起作用。请帮忙 AndroidManifest.xmlJava CardEmulation似乎正常,但未接收字节[],java,android,hce,Java,Android,Hce,打印出来的所有日志都很好,但这东西不起作用。请帮忙 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.abc.hcetest"> <uses
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.abc.hcetest">
<uses-permission android:name="android.permission.NFC" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".services.ApduService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice" />
</service>
</application>
</manifest>
ApduService
public class ApduService extends HostApduService {
final static String LOGTAG = ApduService.class.getName();
@Override
public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
if(commandApdu != null){
Log.d(LOGTAG, "processCommandApdu " + commandApdu.length);
}
else{
Log.d(LOGTAG, "processCommandApdu " + commandApdu);
}
return null;
}
private boolean canStartTrans() {
Log.d(LOGTAG, "in can start trans");
return true;
}
@Override
public void onDeactivated(int reason) {
Log.d(LOGTAG, "onDeactivated: " + reason);
}
}
打印件为:
setPreferredNFCService isSet:true
(nfc!=null):真
(comp!=null):true
仿真返回值:true
由于emulationRetVal
为true
,因此APDU服务应处于活动状态,并与cardsemulation
相关。但是,它不起作用
要使HCE正常运行,我必须做些什么?您没有显示您的
apduservice.xml
,该文件是进行AID注册的文件。或者,您应该在应用程序中手动调用CardEmulation::registerAidsForService
确保您执行了中概述的所有步骤。您没有显示您的
apduservice.xml
,该文件是进行AID注册的文件。或者,您应该在应用程序中手动调用CardEmulation::registerAidsForService
确保执行中概述的所有步骤
public class ApduService extends HostApduService {
final static String LOGTAG = ApduService.class.getName();
@Override
public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
if(commandApdu != null){
Log.d(LOGTAG, "processCommandApdu " + commandApdu.length);
}
else{
Log.d(LOGTAG, "processCommandApdu " + commandApdu);
}
return null;
}
private boolean canStartTrans() {
Log.d(LOGTAG, "in can start trans");
return true;
}
@Override
public void onDeactivated(int reason) {
Log.d(LOGTAG, "onDeactivated: " + reason);
}
}