禁用某些片段的Android光束

时间:2015-07-10 12:30:33

标签: android nfc ndef nfc-p2p android-beam

我需要禁用波束并启用某些片段。所以我有基本片段,供应商片段和产品片段。在基础片段onResume中,我调用:

NfcAdapter adapter = NfcAdapter.getDecaultAdapter(getActivity());
adapter.setNdefPushMessage(null, getActivity());

所以,此时我将两个NFC设备放在一起,它会播放声音,但不涉及UI。这就是我想要的。

然后用户转到产品,订购产品并查看orderummary片段上的sthem。在这里我创建了我的NDEF消息并将其传递给我的NDEF推送消息回调:

mNfcAdapter.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() {
        @Override
        public NdefMessage createNdefMessage(NfcEvent event) {
            NdefMessage message = new NdefMessage((new NdefRecord[]{createMime("application/com.me.myactivity.fragments", mToBeam.getBytes()) }));

            return message;
        }
    }, mActivity);

mNfcAdapter.setOnNdefPushCompleteCallback(new NfcAdapter.OnNdefPushCompleteCallback() {
        @Override
        public void onNdefPushComplete(NfcEvent event) {

        }
    }, mActivity);

然而,在成功传输后,我将用户带回到onResume()我呼叫的产品页面:

mNfcAdapter.setNdefPushMessage(null, getActivity());

然而,这被称为,现在当我将两个设备放在一起时,即使消息为空,我也会获得UI。

1 个答案:

答案 0 :(得分:0)

您正在混合两种不同的方法:静态和基于回调。要禁用基于回调的方法,您必须调用setNdefPushMessageCallback作为回调传递null

adapter.setNdefPushMessage(null, getActivity());
adapter.setNdefPushMessageCallback(null, getActivity());
adapter.setOnNdefPushCompleteCallback(null, getActivity());