Почему функция 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". Это решает мою проблему