@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nfc=NfcAdapter.getDefaultAdapter(this); secretMessage=(EditText)findViewById(R.id.secretMessage); nfc.setOnNdefPushCompleteCallback(this, this); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { readFromTag(getIntent()); } }
@Test public void setOnNdefPushCompleteCallback_shouldUseCallback() { final NfcAdapter.OnNdefPushCompleteCallback callback = mock(NfcAdapter.OnNdefPushCompleteCallback.class); final Activity activity = Robolectric.setupActivity(Activity.class); final NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity); adapter.setOnNdefPushCompleteCallback(callback, activity); assertThat(shadowOf(adapter).getOnNdefPushCompleteCallback()).isSameAs(callback); }
@Test public void setOnNdefPushCompleteCallback_throwsOnNullInActivities() { final NfcAdapter.OnNdefPushCompleteCallback callback = mock(NfcAdapter.OnNdefPushCompleteCallback.class); final Activity activity = Robolectric.setupActivity(Activity.class); final Activity nullActivity = null; final NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity); expectedException.expect(NullPointerException.class); expectedException.expectMessage("activities cannot contain null"); adapter.setOnNdefPushCompleteCallback(callback, activity, nullActivity); }
@Test public void setOnNdefPushCompleteCallback_throwsOnNullActivity() { final NfcAdapter.OnNdefPushCompleteCallback callback = mock(NfcAdapter.OnNdefPushCompleteCallback.class); final Activity activity = Robolectric.setupActivity(Activity.class); final Activity nullActivity = null; final NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity); expectedException.expect(NullPointerException.class); expectedException.expectMessage("activity cannot be null"); adapter.setOnNdefPushCompleteCallback(callback, nullActivity); }
/** * * Stop pushing (beaming). * */ protected void stopPushing() { if(pushing) { nfcAdapter.setNdefPushMessageCallback(null, this); nfcAdapter.setOnNdefPushCompleteCallback(null, this); pushing = false; } }
/** * * Start pushing (beaming). * */ protected void startPushing() { if(!pushing) { // Register Android Beam callback for creating (dynamic) messages to be beamed nfcAdapter.setNdefPushMessageCallback(this, this); // you could also use the // nfcAdapter.setNdefPushMessage(..) // method to set a static message to be beamed // Register callback to listen for message-sent success nfcAdapter.setOnNdefPushCompleteCallback(this, this); pushing = true; } }
/** * If the device has NFC, construct a BeamCallback and pass it to Android. * * @param activity Activity that is sending out beam messages. * @param provider Provider that returns the URL that should be shared. */ public static void registerForBeam(final Activity activity, final BeamProvider provider) { final NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(activity); if (nfcAdapter == null) return; if (activity.checkPermission(Manifest.permission.NFC, Process.myPid(), Process.myUid()) == PackageManager.PERMISSION_DENIED) return; try { final BeamCallback beamCallback = new BeamCallback(activity, provider); nfcAdapter.setNdefPushMessageCallback(beamCallback, activity); nfcAdapter.setOnNdefPushCompleteCallback(beamCallback, activity); } catch (IllegalStateException e) { Log.w("BeamController", "NFC registration failure. Can't retry, giving up."); } } }