【发布时间】:2015-09-19 15:53:57
【问题描述】:
我想编写一个可以存储唯一 ID 的程序,然后将其作为 NFC 标签发送到另一个 NFC 阅读器设备。如何将我的代码 (nfcTag) 发送到 NFC 阅读器?我可以在没有 AID 的情况下为我的应用程序执行此操作吗?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PackageManager pm = this.getPackageManager();
String nfcTag="123456789"; //the code wants to work as NFC tag
TextView msg = (TextView) findViewById(R.id.txtShow);
byte[] t2 = new byte[9]; //t2 return from processCommandApdu
t2 = nfcTag.getBytes();
@Override
public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
msg.setText(nfcTag);
return t2; //return nfcTag too read with NFC tag reader devices
}
@Override
public void onDeactivated(int reason) {
msg.setText("Your phone does not has HCE hardware.");
if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
// HCE is not available on the device.
Toast.makeText(this, "The device does not has HCE hardware.",
Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "HCE supported on your device.",
Toast.LENGTH_SHORT).show();
}
}
}
}
这里是 AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<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>
</service>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
【问题讨论】:
-
'@Override public byte[] processCommandApdu(b...' 在 onCreate() 中?那甚至不会编译。
-
@greenapps : 是的 :( 我不知道我应该怎么做。我在很多网站上都读到过 HCE,但我不明白如何编译我的项目。
标签: android nfc uniqueidentifier apdu hce