我可以通过NFC发送URL吗?

时间:2014-02-25 12:55:29

标签: java android nfc

我花了很多时间试图在三星Galaxy s3和nexus之间发送网址而没有任何成功。我已多次阅读API。我尝试过使用复制粘贴发送带有Ndef消息的字符串的示例但没有成功。它们是否运行相同的协议,因为它们运行不同的Android版本?我的目标是API版本16及更高版本。我的代码:

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); 
    }
}

我尝试过回调而没有回复。两种方式都不奏效。另一部手机根本没有反应。我想用主页打开浏览器。有任何想法吗?非常感谢你!

1 个答案:

答案 0 :(得分: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可用时才会运行。