【发布时间】:2015-05-22 08:00:09
【问题描述】:
我需要创建具有可选 NFC 功能的应用。 我可以在没有清单许可的情况下访问 NFC(Android)吗?或者我应该创建两个应用程序:一个 NFC 版本,一个没有它。
【问题讨论】:
标签: android nfc android-permissions
我需要创建具有可选 NFC 功能的应用。 我可以在没有清单许可的情况下访问 NFC(Android)吗?或者我应该创建两个应用程序:一个 NFC 版本,一个没有它。
【问题讨论】:
标签: android nfc android-permissions
根据thorbear的发现更新
uses-feature 元素,以便您的应用程序仅在具有 NFC 硬件的设备上显示在 Google Play 中:
<uses-feature android:name="android.hardware.nfc" android:required="true" />
如果您的应用程序使用 NFC 功能,但该功能对您的应用程序并不重要,您可以省略 uses-feature 元素并在运行时通过检查 getDefaultAdapter() 来检查 NFC 可用性为空。
如果不在清单中添加权限,这是不可能的。和你 不需要为这种情况创建两个应用程序。
阅读Requesting NFC Access in the Android Manifest了解更多详情
但是是的,您可以说“我的应用程序使用 NFC 功能,但可选”。
为此,您需要将 <uses-feature android:name="android.hardware.nfc" android:required="false" /> 添加到清单中。因此,Google play 可以使您的应用程序可用于所有具有或没有NFC 的设备。
注意:如果您没有将这个<uses-feature .../> 标签添加到带有android:required="false" 的清单中,Google Play 会将您的应用程序视为“此应用程序仅适用于具有 NFC 的设备”。没有NFC 功能的设备无法从 Google Play 下载您的应用程序。
这是清单示例
<manifest ...>
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<uses-permission android:name="android.permission.NFC" />
</manifest>
阅读更多关于<uses-feature>
【讨论】:
<uses-feature>需要明确声明为required="false"的注释的参考吗?根据linked documentation 为<uses-feature> NFC 不在Permissions that Imply Feature Requirements 列表中。
If your application uses NFC functionality, but that functionality is not crucial to your application, you can omit the uses-feature element [...]
如果不向清单添加以下权限,您将无法访问 NFC。
<uses-permission android:name="android.permission.NFC" />
【讨论】: