2014-02-25 39 views
0

我一直花费很多时间尝试在三星Galaxy S3和nexus之间发送一个url,但没有任何成功。我已经多次阅读API。我尝试了使用复制粘贴而没有成功发送带有Ndef消息的字符串的示例。他们是否运行相同的协议,因为他们运行不同的Android版本?我的目标是API版本16及以上。我的代码:我是否通过NFC发送URL?

public class MainActivity extends Activity { 
    NfcAdapter mNfcAdapter; 
    NdefMessage mNdefMessage; 
    TextView textView; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     textView = (TextView) findViewById(R.id.textView); 
     // Check for available NFC Adapter 
     mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
     NdefRecord uriRecord = NdefRecord.createUri(Uri.encode("http://www.google.com/")); 
     mNdefMessage = new NdefMessage(new NdefRecord[] { uriRecord }); 
     mNfcAdapter.setNdefPushMessage(mNdefMessage, this, this); 

//   mNfcAdapter.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() 
//   { 
//    /* 
//    * (non-Javadoc) 
//    * @see android.nfc.NfcAdapter.CreateNdefMessageCallback#createNdefMessage(android.nfc.NfcEvent) 
//    */ 
//    @Override 
//    public NdefMessage createNdefMessage(NfcEvent event) 
//    { 
//    Toast.makeText(getApplicationContext(), "CREATING MESSAGE", Toast.LENGTH_LONG).show(); 
//     NdefRecord uriRecord = NdefRecord.createUri(Uri.encode("http://www.google.com/")); 
//     return new NdefMessage(new NdefRecord[] { uriRecord }); 
//    } 
// 
//   }, this, this); 
    } 
} 

我试过回拨和没有。两种方式都不行。另一部手机根本没有反应。我希望它能打开一个带有主页的浏览器。有任何想法吗?非常感谢你!

回答

0

这是代码为我工作:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // .. 
    // only try to set up NFC on API10+ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD_MR1) { 
     // Check for available NFC Adapter 
     NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 
     if (nfcAdapter != null) { 
      nfcAdapter.setNdefPushMessage(
        new NdefMessage(NdefRecord.createUri(Uri.encode("http://www.google.com/"))), 
        this); 
     } 
    } 
} 

请注意,这只是在API10 +且仅当一个NFC可用运行。