Reads from MyKad chip
Shows an enlarged photo for easier verification
Snaps the chip to produce a JPEG image
Allows other apps to read MyKad through intent
Fingerprint verification, which typically requires a device in the range of several thousand ringgit. ShowKad reduces the total cost to below 100 ringgit (app is free, while reader costs 99 ringgit), by allowing simple and reasonably-effective visual verification of the photo.
If you need fingerprint verification, please take a look at FingKad.
Sharp and printer-friendly image with a white background
Absolutely more trustworthy than a photocopy or a bare visual inspection
Can be carried in the pocket
Replaces photocopy of MyKad
Replaces photocopy of driving license
For app developers, MyKad reading without smartcard programming, reader integration and external libraries
Car salesperson
Vehicle hire-purchase staff of a finance company
Car rental company
Anyone who needs to verify a MyKad
Anyone who writes apps for MyKad, whether as school projects or commercial systems
It is an ACR38U-PocketMate from Advanced Card Systems. We ship it to you by courier service, anywhere in Malaysia. No shipping fee is needed.
RM 99
(FREE shipping within Malaysia, FREE USB OTG adapter)
Pay with PayPal - FREE micro USB OTG adapter
Pay with PayPal - FREE type c USB OTG adapter
intent = new Intent ("com.causalidea.cikad.showkad.READ_MYKAD");
extras = new Bundle ();
extras.putBoolean ("READ_PHOTO", false); // Do not read the photo
intent.putExtras (extras);
activity.startActivityForResult (intent, 0);
Pressing OK causes MyKad reading, followed by an automatic switch back to the calling app, with the result code Activity.RESULT_OK.
Pressing Cancel switches back to the calling app right-away with the result code Activity.RESULT_CANCELED.
public void onActivityResult (int requestCode, int resultCode, Intent intent) {
if (resultCode == Activity.RESULT_OK) {
extras = intent.getExtras ();
if (extras != null) {
extras.getString ("IC_NUMBER");
extras.getString ("NAME");
extras.getString ("GENDER");
extras.getString ("CITIZENSHIP");
extras.getString ("BIRTH_DATE");
extras.getString ("RACE");
extras.getString ("RELIGION");
extras.getString ("ADDRESS_1");
extras.getString ("ADDRESS_2");
extras.getString ("ADDRESS_3");
extras.getString ("POSTCODE");
extras.getString ("CITY");
extras.getString ("STATE");
photoByteArray = extras.getByteArray ("PHOTO");
if (photoByteArray != null) {
bitmap = BitmapFactory.decodeByteArray (photoByteArray, 0, photoByteArray.length);
imageView.setImageBitmap (bitmap);
}
}
} else if (resultCode == Activity.RESULT_CANCELED) {
}
}