NFC打开指定应用 URI实现

来源:互联网 发布:张龙java培训视频 编辑:程序博客网 时间:2024/06/08 03:29
import java.io.IOException;
import java.nio.charset.Charset;

import android.content.Context;
import android.nfc.FormatException;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.Tag;
import android.nfc.TagLostException;
import android.nfc.tech.Ndef;
import android.nfc.tech.NdefFormatable;
import android.widget.Toast;

public class NFC {
public static boolean writeTag(Context context, Tag tag) {   
   NdefRecord relayRecord =new NdefRecord(
      NdefRecord.TNF_ABSOLUTE_URI ,
      "zoeice://com.zoeice.example/applicationUp".getBytes(Charset.forName("US-ASCII")),
      newbyte[0], new byte[0]);
 
   // Complete NDEF messagewith both records
   NdefMessage message = newNdefMessage(new NdefRecord[] {relayRecord});
 
   try {
      // If the tag is already formatted, just writethe message to it
      Ndef ndef = Ndef.get(tag);
      if(ndef != null) {
         ndef.connect();
 
          // Makesure the tag is writable
         if(!ndef.isWritable()) {
          Toast.makeText(context, "nfcReadOnlyErrorTitle", Toast.LENGTH_SHORT).show();
             return false;
          }
 
          // Check ifthere's enough space on the tag for the message
          int size =message.toByteArray().length;
         if(ndef.getMaxSize() < size) {
          Toast.makeText(context, "nfcReadOnlyErrorTitle", Toast.LENGTH_SHORT).show();
             return false;
          }
 
          try {
             // Write the data to thetag
            ndef.writeNdefMessage(message);
 
             Toast.makeText(context,"nfcWrittenTitle", Toast.LENGTH_SHORT ).show();
             return true;
          } catch(TagLostException tle) {
          Toast.makeText(context, "nfcTagLostErrorTitle", Toast.LENGTH_SHORT).show();
             return false;
          } catch(IOException ioe) {
          Toast.makeText(context, "nfcFormattingErrorTitle",Toast.LENGTH_SHORT ).show();
             return false;
          } catch(FormatException fe) {
          Toast.makeText(context, "nfcFormattingErrorTitle",Toast.LENGTH_SHORT ).show();
             return false;
          }
      // If the tag is not formatted, format it withthe message
      } else {
         NdefFormatable format =NdefFormatable.get(tag);
          if(format!= null) {
             try {
                format.connect();
                format.format(message);
 
                Toast.makeText(context, "nfcWrittenTitle",Toast.LENGTH_SHORT ).show();
                return true;
             } catch (TagLostException tle){
              Toast.makeText(context,"nfcTagLostErrorTitle", Toast.LENGTH_SHORT ).show();
                return false;
             } catch (IOException ioe){
              Toast.makeText(context,"nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
                return false;
             } catch (FormatException fe){
              Toast.makeText(context,"nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
                return false;
             }
          } else{
          Toast.makeText(context, "nfcNoNdefErrorTitle", Toast.LENGTH_SHORT).show();
             return false;
          }
      }
   } catch(Exception e){
    Toast.makeText(context,"nfcUnknownErrorTitle", Toast.LENGTH_SHORT ).show();
   }
 
   return false;
}
}
 
 
识别Tag的方法是在AndroidManifest.xml中加入:

 

          
                 
                    
             
             
                    
                    
                    
             
    
0 0
原创粉丝点击