繁体   English   中英

使用 NFC 配置 Android 设备

[英]Provisioning an Android device using NFC

我有一个安装了这个应用程序的安卓设备。 然后有第二个设备,我已经恢复出厂设置。 两者都支持NFC。 我正在尝试使用设备所有者应用程序配置第二个设备。 我想了解这是如何工作的。 我的印象是,当我将两个设备撞在一起时,应该会发生一些事情。 然而,什么也没有发生。 两个设备都打开了,我相信我在正确的地方碰撞它们。 我以前没有使用过 NFC。

在我上面链接的 Google 提供的 NFCProvisioning 应用程序上,我可以看到在 ndef 消息中设置了 wifi ssid 和密码。 但是,设备所有者应用程序的 url 未在任何地方设置。 被配置的设备如何知道如何下载 apk?

还有这个 nfcprovisioning.txt 怎么样? 拜托,之前做过这件事的人可以帮帮我。 非常感谢!

所以现在我有更多的时间可以给出完整的答案。

所以先了解一下 Android 和 NFC 的一些背景知识。

Android 操作系统内置了一些解析和处理 NFC 卡上某些类型数据的功能,它将处理带有 NDEF 消息的卡。

当出现 NFC 卡时,操作系统将尝试读取和理解该卡。 如果没有正在运行的应用程序表示对 NFC NDEF 消息感兴趣,它将处理某些类型的 NDEF 消息。

例如,如果 NDEF 消息包含 Mime 类型为“Web 地址”的记录,则操作系统将启动 Web 浏览器(或询问用户在哪个 Web 浏览器中打开 URL)

NDEF 消息还可以包含“Android 应用程序参考”或 AAR 记录,这指定了应处理卡上数据的包名称。 如果未安装该应用程序,它将打开 google play 进行安装。 https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#aar

有关 Mime 类型和 AAR 的详细信息,请访问https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#create-records

这一切都是由他们的操作系统从 NDEF 数据创建一个Intent并将其传递给应用程序来完成的。

因此,更具体到 NFCProvisioning 创建一个特殊 Mime 类型“application/com.android.managedprovisioning”的 NDEF 消息,Android 理解它是关于设备配置的,并且使用给定的包名称或“com.example.android.deviceowner” " 或 "com.example.android.deviceowner/.DeviceOwnerReceiver" 如果没有给出。

包名称可以在 Play 商店中找到,但它也可以选择指定用于下载管理应用程序包的 URL。

NDEF 消息中还包含其他数据,例如 Wifi 详细信息、时区等将通过设备配置应用程序传递。 可以传递的详细信息在https://developer.android.com/reference/android/app/admin/DevicePolicyManager#MIME_TYPE_PROVISIONING_NFC我相信

您可能遇到的问题是 Provisioner 设备用于发送数据的方法是 NfcAdapter#setNdefPushMessage http://developer.android.com/reference/android/nfc/NfcAdapter.html#setNdefPushMessage(android.nfc. NdefMessage,%20android.app.Activity,%20android.app.Activity...)已在 API 级别 29/Android 10 中弃用(不再有效)

请参阅此https://github.com/android/enterprise-samples/issues/27上提出的问题

我以前没有使用过这个过程,但查看代码“nfcprovisioning.txt”只是一个文本文件,你可以加载它存储键=值对的值,而不必每次都将它们输入到应用程序中. 例如,它会有像你想要提供的数据的行 EXTRA_PROVISIONING_WIFI_SSID=someWifiSSid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM