-
-
Save luixal/5768921 to your computer and use it in GitHub Desktop.
// Needed in AndroidManifest: | |
<!-- Permission for using NFC hardware --> | |
<uses-permission android:name="android.permission.NFC"/> | |
<!-- Forcing device to have NFC hardware --> | |
<uses-feature android:name="android.hardware.nfc" android:required="true"/> | |
<!-- Registering app for receiving NFC's TAG_DISCOVERED intent --> | |
<intent-filter> | |
<action android:name="android.nfc.action.TAG_DISCOVERED"/> | |
<category android:name="android.intent.category.DEFAULT"/> | |
</intent-filter> | |
// handling ACTION_TAG_DISCOVERED action from intent: | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
if (getIntent().getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED)) { | |
((TextView)findViewById(R.id.text)).setText( | |
"NFC Tag\n" + | |
this.ByteArrayToHexString(getIntent().getByteArrayExtra(NfcAdapter.EXTRA_ID))); | |
} | |
} | |
// Converting byte[] to hex string: | |
private String ByteArrayToHexString(byte [] inarray) { | |
int i, j, in; | |
String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; | |
String out= ""; | |
for(j = 0 ; j < inarray.length ; ++j) | |
{ | |
in = (int) inarray[j] & 0xff; | |
i = (in >> 4) & 0x0f; | |
out += hex[i]; | |
i = in & 0x0f; | |
out += hex[i]; | |
} | |
return out; | |
} |
package es.luixal.ragbag; | |
import android.app.Activity; | |
import android.app.PendingIntent; | |
import android.content.BroadcastReceiver; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.content.IntentFilter; | |
import android.nfc.NfcAdapter; | |
import android.nfc.tech.IsoDep; | |
import android.nfc.tech.MifareClassic; | |
import android.nfc.tech.MifareUltralight; | |
import android.nfc.tech.Ndef; | |
import android.nfc.tech.NfcA; | |
import android.nfc.tech.NfcB; | |
import android.nfc.tech.NfcF; | |
import android.nfc.tech.NfcV; | |
import android.os.Bundle; | |
import android.util.Log; | |
import android.view.Menu; | |
import android.widget.TextView; | |
public class MainActivity extends Activity { | |
// list of NFC technologies detected: | |
private final String[][] techList = new String[][] { | |
new String[] { | |
NfcA.class.getName(), | |
NfcB.class.getName(), | |
NfcF.class.getName(), | |
NfcV.class.getName(), | |
IsoDep.class.getName(), | |
MifareClassic.class.getName(), | |
MifareUltralight.class.getName(), Ndef.class.getName() | |
} | |
}; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.main_activity); | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.main_activity, menu); | |
return true; | |
} | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
// creating pending intent: | |
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); | |
// creating intent receiver for NFC events: | |
IntentFilter filter = new IntentFilter(); | |
filter.addAction(NfcAdapter.ACTION_TAG_DISCOVERED); | |
filter.addAction(NfcAdapter.ACTION_NDEF_DISCOVERED); | |
filter.addAction(NfcAdapter.ACTION_TECH_DISCOVERED); | |
// enabling foreground dispatch for getting intent from NFC event: | |
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); | |
nfcAdapter.enableForegroundDispatch(this, pendingIntent, new IntentFilter[]{filter}, this.techList); | |
} | |
@Override | |
protected void onPause() { | |
super.onPause(); | |
// disabling foreground dispatch: | |
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); | |
nfcAdapter.disableForegroundDispatch(this); | |
} | |
@Override | |
protected void onNewIntent(Intent intent) { | |
if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED)) { | |
((TextView)findViewById(R.id.text)).setText( | |
"NFC Tag\n" + | |
ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID))); | |
} | |
} | |
private String ByteArrayToHexString(byte [] inarray) { | |
int i, j, in; | |
String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; | |
String out= ""; | |
for(j = 0 ; j < inarray.length ; ++j) | |
{ | |
in = (int) inarray[j] & 0xff; | |
i = (in >> 4) & 0x0f; | |
out += hex[i]; | |
i = in & 0x0f; | |
out += hex[i]; | |
} | |
return out; | |
} | |
} |
Thank you for code !
the code shows a fatal error.what have to do
Thanks a lot!
Thanks, this is very helpful.
You're welcome!
It's great to see that my snippet is useful for more devs :)
Yes, it is!
Thank you very much. Save my day...
Hi.. Can you help me and make a * .aix component from these files (for app inventor).. ?
Thankyou for the code!, Its very helpful for me.
Thank's you for the code!. It's help me a lot
how to read all sector data?
@MojtabaShams not sure, this snippet dates from 2013/14, It's been ages since I coded something for Android. Sorry not being able to help, but I'm sure there are better libs to do this nowadays :)
In fact, it's surprising this is still used in 2019! :D
Thanks for this snippet 👍🏽
Thanks for this code. No fuzz, working like a charm.
Thanks a lot worked for me too!
Thank you, this saved me a lot of time.
Thanks a lot worked for me too!
Thanks a lot worked for me too!
Thank you!
Thank you, this code help me!