我是Android开发的新手,正在开发需要NFC权限的应用程序。由于某些原因,该应用在打开时或在NFC标签或终端附近时不会提示用户。以下是我的AndroidManifest.xml。有人可以告诉我我在做什么错吗?
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc.hce" android:required="true" />
<uses-feature android:name="android.hardware.nfc" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyHostApduService" android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE">
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE"/>
</intent-filter>
<meta-data android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice"/>
</service>
</application>
答案 0 :(得分:1)
NFC许可被分类为PROTECTION_NORMAL
(请参阅Permissions overview - Normal permissions)。因此,该权限不需要用户的明确同意,并且根本不应出现请求提示:
来自Permissions overview - Permission approval:
如果您的应用在其清单中列出了正常权限(即,不会对用户的隐私或设备的操作造成太大风险的权限),则系统会自动将这些权限授予您的应用。
[...]
只有危险的权限需要用户同意。 [...]
顺便说一句。如果您的意思是说应用程序根本不会触发NFC标签发现事件,则原因是您的清单中似乎没有用于NFC标签发现的任何意图过滤器。有关如何注册标签发现的信息,例如,How to use NFC ACTIONS。