华为手表2 NFC功能不可用? Android Wear 2.0

问题描述 投票:4回答:2

简而言之: 在华为手表2上,似乎NFC可用并启用但NFC_FEAUTURE不是,因此nfc无法正常工作。

尝试开发简单阅读和显示华为手表2上的NFC标签的能力会带来一些困难:

mNfcAdapter.enableForegroundDispatch(this,nfcPendingIntent, nfcIntentFilter, null);  

提出错误

java.lang.UnsupportedOperationException  

这意味着FEATURE_NFC不可用。 在MainActivity onCreate()中:

mNfcAdapter = NfcAdapter.getDefaultAdapter(this);  //NfcAdapter mNfcAdapter
if (mNfcAdapter != null) {
  // Check if device supports NFC
  Log.i("NFC","Your device supports NFC");
}
// Check if NFC is enabled
if (mNfcAdapter.isEnabled()) {
    Log.i("NFC","NFC is Enabled");
}
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) {
// Device compatible for NFC support
   Log.i("NFC", "Device compatible for NFC support"); 
}

显示在控制台中

... I/NFC: Your device supports NFC
... I/NFC: NFC is Enabled

但不是

... I/NFC: Device compatible for NFC support

换一种说法

mNfcAdapter !=nullmNfcAdapter.isEnabled() == true(getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC) == false

这怎么可能?

顺便说一句。我的AndroidManifest.xml:

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

另见Android NFC Tutorial和类似的帖子NFC Android wear (Huawei watch 2.0)

我究竟做错了什么?华为手表2上的NFC是以某种方式锁定还是禁用?

在此先感谢您的帮助。

android nfc wear-os huawei
2个回答
2
投票

基于此documentation,华为手表2支持NFC功能,它还具有Android Wear 2.0功能。

但是,错误java.lang.UnsupportedOperationException意味着该方法尚未由框架作者实现,因此您可以联系支持团队进行说明。看到这个link


1
投票

如果您想创建一个在Huawei Watch 2上使用NFC功能的原型,您可以通过强制功能标志为true来规避此错误。

首先创建一个能够通过反射设置静态属性的函数:

fun setStaticValue(className: String, fieldName: String, newValue: Any) {
    val field = Class.forName(className).getDeclaredField(fieldName)

    field.setAccessible(true)

    val oldValue = field.get(Class.forName(className));

    field.set(oldValue, newValue);
}

然后在调用一个测试功能标志的方法之前使用该函数,如下所示:

setStaticValue("android.nfc.NfcAdapter", "sHasNfcFeature", true)

我不认为这个hack会被接受发布的应用程序,但我能够使用这种方法识别标签。

我还向华为发送了一个错误报告,所以我们希望他们能解决这个问题。

有关使用反射的更多信息,请参阅:http://blog.sevagas.com/?Modify-any-Java-class-field-using-reflection

© www.soinside.com 2019 - 2024. All rights reserved.