Почему функция NFC все еще требуется, даже если я объявляю атрибут android:required="false"?

Я пишу декларацию, связанную с NFC в AndroidManifest, как показано ниже:

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

Я надеюсь, что таким образом, Google Play не будет фильтровать мое приложение в телефоне без функции NFC. Но, к сожалению, я проверил установленное приложение, обнаружил, что NFC все еще требуется.... просто не знаю почему

PackageManager pm = getPackageManager();
try {
    PackageInfo packageInfo1 = pm.getPackageInfo("My pakcage name", PackageManager.GET_CONFIGURATIONS);
    if(packageInfo1 != null && packageInfo1.reqFeatures != null) {
        for(FeatureInfo featureInfo : packageInfo1.reqFeatures) {
            Log.d("TAG", "name:"+featureInfo.name + ", flag:" + featureInfo.flags+",version:"+featureInfo.version);
        }
    }
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Выход:

03-15 12:21:56.673 17052-17052/mapbox1.myapplication D/TAG: name:android.hardware.nfc.hce, flag:1,version:0

Флаг в FeatureInfo равен 1, что означает обязательный....

Я вставляю свой Манифест ниже, удаляя действия и услуги, и т.д.:

И полный вывод:

03-15 12: 41: 02.982 17052-17052 / mapbox1.myapplication D / TAG: имя:android.hardware.bluetooth_le, флаг: 1, версия: 0

03-15 12: 41: 02.982 17052-17052 / mapbox1.myapplication D / TAG: имя: android.hardware.nfc.hce, флаг: 1, версия: 0

03-15 12: 41: 02.982 17052-17052 / mapbox1.myapplication D / TAG: имя: android.hardware.camera, флаг: 1, версия: 0

03-15 12: 41: 02.982 17052-17052 / mapbox1.myapplication D / TAG: имя: android.hardware.camera.autofocus, флаг: 0, версия: 0

required=false в автофокусе работал как хотелось, но обязательный атрибут NFC не работает. (android.hardware.cameraтребуется не работает, вероятно, из-за android.permission.CAMERA)

1 ответ

Я подозреваю, что есть 3-ий библиотеки, переопределяющие это, поэтому я просто добавляю инструменты:replace="android:required", чтобы использовать приложение Android: android: required = "false". Это решает мою проблему

Другие вопросы по тегам