当设备不支持时,NFC权限是否会导致错误?

Does NFC permission result in an error when the device has no support?

我在 AndroidManifest.xml 中获得了 NFC 许可,并将我的应用程序上传到了 PlayStore。现在我的问题是,如果设备不支持 NFC,我尝试从 Playstore 安装 app。它会给出任何类型的错误吗? app 是否至少安装在该设备上。我没有任何不支持的 NFC 设备来测试这种情况。

有:

<uses-permission android:name="android.permission.NFC"/>

还有:

<uses-feature android:name="android.hardware.nfc" android:required="true"/>

uses-feature 可用于控制行为(例如,仅允许在具有 NFC 的设备上安装)。

如果您需要没有 NFC 支持的测试设备,只需使用模拟器图像即可。

只有相当过时的硬件设备不支持它 - 最优雅的解决方案可能是设置 android:required="false" 然后在运行时检查传感器是否存在 - 以使其成为可选的功能,以防它有意义,基于应用程序的实际操作。

device doesn't not support NFC and I try to install app from playstore. Does it give any kind of error?

如果您没有在清单文件中提及相关的 uses-feature 标签,Play 商店将不会给出任何错误并让用户安装该应用程序。现在,一旦安装,在尝试获取 NfcManager 实例时,它将是 null。请参阅此 doc 了解如何请求 NFC 访问。

NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE); // null

这里更好的做法是,我们应该在清单文件中包含 uses-feature,让 Play Store 知道我们的应用程序具有一定的硬件依赖性,我们不希望该应用程序可用于设备不包含这组硬件(在 uses-feature 标签中定义)。

例如:

<uses-feature 
     android:name="android.hardware.nfc" 
     android:required="true"/>