我想在不使用Intent的情况下扫描NFC标签。换句话说,我想强制扫描。我已经读过了:
http://developer.android.com/guide/topics/connectivity/nfc/index.html
https://code.google.com/p/ndef-tools-for-android/
但两者都使用Intents。
P.S。:我的情况是NFC标签永久地附着在设备上,所以我不能使用意图。
答案 0 :(得分:2)
使用foreground dispatch
:
http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html#foreground-dispatch
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter == null || !nfcAdapter.isEnabled()) {
Log.e(TAG, "No NFC Adapter found.");
//finish();
}
Intent intent = new Intent(this, getClass());
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
//intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);
pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
// Handles all MIME based dispatches. You should specify only the ones that you need.
ndef.addDataType("*/*");
} catch (IntentFilter.MalformedMimeTypeException e) {
throw new RuntimeException("failed to add MIME type", e);
}
//intentFiltersArray = new IntentFilter[]{ndef,};
//Use no intent filters to accept all MIME types
intentFiltersArray = new IntentFilter[]{};
// The tech list array can be set to null to accept all types of tag
techListsArray = new String[][]{new String[]{
IsoDep.class.getName(),
NfcA.class.getName(),
NdefFormatable.class.getName()
}};
}
public void onPause() {
nfcAdapter.disableForegroundDispatch(this);
super.onPause();
}
public void onResume() {
nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
super.onResume();
}
public void onNewIntent(Intent intent) {
Tag nfcTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
//do something with tagFromIntent
}
答案 1 :(得分:0)
易。 当你达到“灵活性”的时候......你真的改变了。使用INTENt,读取标签,并将信息保存在您的SD卡,共享首选项,云端的任何地方。 每次要阅读TAG时都要使用此信息。而是读取附加标签时创建的文件。 下次当您删除标记并添加另一个标记时,将重新创建您的文件。
不读取标签,读取附加到设备的标签创建的文件。
答案 2 :(得分:0)
你无法做你想做的事。由于Android NFC子系统的构建方式,无法在没有意图的情况下读取标签。
将标签粘贴到手机背面也是一个非常糟糕的主意。 NFC将 - 只要没有检测到标签 - 定期检查是否存在标签。一旦检测到标签,它将通过空气供电,直到标签不再响应。
如果标签总是在手机的范围内,它会像疯了一样耗尽电池寿命。