Search in sources :

Example 21 with NdefMessage

use of android.nfc.NdefMessage in project android_frameworks_base by crdroidandroid.

the class Ndef method getNdefMessage.

/**
     * Read the current {@link android.nfc.NdefMessage} on this tag.
     *
     * <p>This always reads the current NDEF Message stored on the tag.
     *
     * <p>Note that this method may return null if the tag was in the
     * INITIALIZED state as defined by NFC Forum, as in that state the
     * tag is formatted to support NDEF but does not contain a message yet.
     *
     * <p>This is an I/O operation and will block until complete. It must
     * not be called from the main application thread. A blocked call will be canceled with
     * {@link IOException} if {@link #close} is called from another thread.
     *
     * <p class="note">Requires the {@link android.Manifest.permission#NFC} permission.
     *
     * @return the NDEF Message, can be null
     * @throws TagLostException if the tag leaves the field
     * @throws IOException if there is an I/O failure, or the operation is canceled
     * @throws FormatException if the NDEF Message on the tag is malformed
     */
public NdefMessage getNdefMessage() throws IOException, FormatException {
    checkConnected();
    try {
        INfcTag tagService = mTag.getTagService();
        if (tagService == null) {
            throw new IOException("Mock tags don't support this operation.");
        }
        int serviceHandle = mTag.getServiceHandle();
        if (tagService.isNdef(serviceHandle)) {
            NdefMessage msg = tagService.ndefRead(serviceHandle);
            if (msg == null && !tagService.isPresent(serviceHandle)) {
                throw new TagLostException();
            }
            return msg;
        } else if (!tagService.isPresent(serviceHandle)) {
            throw new TagLostException();
        } else {
            return null;
        }
    } catch (RemoteException e) {
        Log.e(TAG, "NFC service dead", e);
        return null;
    }
}
Also used : INfcTag(android.nfc.INfcTag) NdefMessage(android.nfc.NdefMessage) IOException(java.io.IOException) RemoteException(android.os.RemoteException) TagLostException(android.nfc.TagLostException)

Example 22 with NdefMessage

use of android.nfc.NdefMessage in project bitcoin-wallet by bitcoin-wallet.

the class WalletActivity method handleIntent.

private void handleIntent(final Intent intent) {
    final String action = intent.getAction();
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
        final String inputType = intent.getType();
        final NdefMessage ndefMessage = (NdefMessage) intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)[0];
        final byte[] input = Nfc.extractMimePayload(Constants.MIMETYPE_TRANSACTION, ndefMessage);
        new BinaryInputParser(inputType, input) {

            @Override
            protected void handlePaymentIntent(final PaymentIntent paymentIntent) {
                cannotClassify(inputType);
            }

            @Override
            protected void error(final int messageResId, final Object... messageArgs) {
                dialog(WalletActivity.this, null, 0, messageResId, messageArgs);
            }
        }.parse();
    }
}
Also used : NdefMessage(android.nfc.NdefMessage) BinaryInputParser(de.schildbach.wallet.ui.InputParser.BinaryInputParser) PaymentIntent(de.schildbach.wallet.data.PaymentIntent)

Aggregations

NdefMessage (android.nfc.NdefMessage)22 NdefRecord (android.nfc.NdefRecord)9 IOException (java.io.IOException)8 INfcTag (android.nfc.INfcTag)7 RemoteException (android.os.RemoteException)7 TagLostException (android.nfc.TagLostException)6 Parcelable (android.os.Parcelable)5 NfcAdapter (android.nfc.NfcAdapter)3 Tag (android.nfc.Tag)3 Intent (android.content.Intent)2 FormatException (android.nfc.FormatException)2 NfcEvent (android.nfc.NfcEvent)2 PaymentIntent (de.schildbach.wallet.data.PaymentIntent)2 Uri (android.net.Uri)1 Ndef (android.nfc.tech.Ndef)1 Handler (android.os.Handler)1 HandlerThread (android.os.HandlerThread)1 BinaryInputParser (de.schildbach.wallet.ui.InputParser.BinaryInputParser)1 UserBean (org.qii.weiciyuan.bean.UserBean)1