我花了很多时间试图在三星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);
}
}
我尝试过回调而没有回复。两种方式都不奏效。另一部手机根本没有反应。我想用主页打开浏览器。有任何想法吗?非常感谢你!
答案 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可用时才会运行。