我正在尝试在NFC标签上存储一个非常小的(1K)html文件。 当通过电话阅读时,它应该触发浏览器打开它。
可悲的是,我有这些限制:
我用这种方式创建了标签:
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); NdefRecord record = NdefRecord.createMime( "text/html", "Hello world in <b>HTML</b> !"); NdefMessage message = new NdefMessage(new NdefRecord[] { record }); if (writeTag(message, detectedTag)) { Toast.makeText(this, "Success: Wrote placeid to nfc tag", Toast.LENGTH_LONG) .show(); }
但由于某种原因,当读取标记时,默认浏览器不会打开。即使浏览器确实有正确的意图过滤器:
<!-- For these schemes where any of these particular MIME types have been supplied, we are a good candidate. --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" /> <data android:scheme="https" /> <data android:mimeType="text/html"/> <data android:mimeType="text/plain"/> <data android:mimeType="application/xhtml+xml"/> <data android:mimeType="application/vnd.wap.xhtml+xml"/> </intent-filter>
我做错了吗?
谢谢!
答案 0 :(得分:0)
您需要将记录创建为URI。如:
NdefRecord rtdUriRecord1 = NdefRecord.createUri("http://example.com");
答案 1 :(得分:0)
嗯..
显然这是不可能的,清单指定了这个:
https://android.googlesource.com/platform/packages/apps/Browser/+/ics-mr0/AndroidManifest.xml
<!-- Accept inbound NFC URLs at a low priority -->
<intent-filter android:priority="-101">
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
这是如此限制。难怪为什么二维码胜过NFC。
如果您这么想的话,请投票给我的功能请求!