Exemplo n.º 1
0
 /**
  * Checks to see if the activity's intent ({@link android.app.Activity#getIntent()}) is an NFC
  * intent that the app recognizes. If it is, then parse the NFC message and set the activity's
  * intent (using {@link android.app.Activity#setIntent(android.content.Intent)}) to something the
  * app can recognize (i.e. a normal {@link android.content.Intent#ACTION_VIEW} intent).
  */
 @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
 public static void tryUpdateIntentFromBeam(Activity activity) {
   if (UIUtils.hasICS()) {
     Intent originalIntent = activity.getIntent();
     if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(originalIntent.getAction())) {
       Parcelable[] rawMsgs =
           originalIntent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
       NdefMessage msg = (NdefMessage) rawMsgs[0];
       // Record 0 contains the MIME type, record 1 is the AAR, if present.
       // In iosched, AARs are not present.
       NdefRecord mimeRecord = msg.getRecords()[0];
       if (ScheduleContract.Sessions.CONTENT_ITEM_TYPE.equals(new String(mimeRecord.getType()))) {
         // Re-set the activity's intent to one that represents session details.
         Intent sessionDetailIntent =
             new Intent(Intent.ACTION_VIEW, Uri.parse(new String(mimeRecord.getPayload())));
         activity.setIntent(sessionDetailIntent);
       }
     }
   }
 }
Exemplo n.º 2
0
  /** Sets this activity's Android Beam message to one representing the given session. */
  @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
  public static void setBeamSessionUri(Activity activity, Uri sessionUri) {
    if (UIUtils.hasICS()) {
      NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(activity);
      if (nfcAdapter == null) {
        // No NFC :-(
        return;
      }

      nfcAdapter.setNdefPushMessage(
          new NdefMessage(
              new NdefRecord[] {
                new NdefRecord(
                    NdefRecord.TNF_MIME_MEDIA,
                    ScheduleContract.Sessions.CONTENT_ITEM_TYPE.getBytes(),
                    new byte[0],
                    sessionUri.toString().getBytes())
              }),
          activity);
    }
  }