我正在尝试执行
adb shell am start -W -a android.nfc.action.NDEF_DISCOVERED -d "https://www.google.de"
类似于实际的 NFC 标签扫描,其中包含一些 URI (SmartPoster)。
这是必要的,因为上面的命令可以工作,例如与 Chrome 一起使用,但不是作为电容器应用程序的深层链接。
据我发现,有必要向此意图发送一些额外的数据,以便使其作为我的用例的深层链接正常工作。
但是,我并不是真正的 android 开发人员,并且文档缺乏有关这些附加内容的正确语法和内容的示例。
根据 https://developer.android.com/studio/command-line/adb#IntentSpec
这些是可能需要设置的额外选项:
-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
--esn <EXTRA_KEY>
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>
--el <EXTRA_KEY> <EXTRA_LONG_VALUE>
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>
--eu <EXTRA_KEY> <EXTRA_URI_VALUE>
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]
--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]
(复制自:https://stackoverflow.com/a/26517290)
字符串数组似乎有一个新选项:
[--esa <EXTRA_KEY> <EXTRA_STRING_VALUE>[,<EXTRA_STRING_VALUE...]]
(to embed a comma into a string escape it using "\,")
(复制自https://stackoverflow.com/a/28638589)
根据 google,
EXTRA_TAG
被作为意图的额外部分传递。
当发现标签时,会创建一个 Tag 对象并将其传递给 通过 NfcAdapter#EXTRA_TAG 额外的单个活动 android.content.Intent 通过 android.content.Context#startActivity。
强制性额外包含被发现的标签 ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED 和 ACTION_TAG_DISCOVERED 意图。
EXTRA_TAG
的值为android.nfc.extra.TAG
- 参见此处
所以我目前最好的猜测是这样的东西可能会起作用:
adb shell am start -W -a android.nfc.action.NDEF_DISCOVERED -d "https://www.google.de" --es android.nfc.extra.Tag 'flattened object?!'
问题:有人知道如何正确执行吗?
非常感谢您的帮助!
我不确定关于标签内容和读取标签的应用程序您已经知道什么和不知道什么。
在最简单的情况下,阅读意图
data
(或dataString
)就足够了。
我自己正在寻找相同类型的信息,因为我没有应用程序应读取的 NFC 标签的规格。 所以你的第一个猜测可能是正确的:
adb shell am start -W -a android.nfc.action.NDEF_DISCOVERED -d "https://www.google.de"
但也许您的 NFC 标签包含您提到的额外标签中的 url。在这种情况下,那就是:
adb shell am start -W -a android.nfc.action.NDEF_DISCOVERED --es android.nfc.extra.Tag "https://www.google.de"
URL 也可能存储在其中一个 NDEF 消息中,因为 它是携带数据的另一种选择。 我个人没有找到正确的
adb
命令来触发该意图,但这一点可能会对其他人有所帮助。