【问题标题】:Uses-feature android:required="false" being ignored使用功能 android:required="false" 被忽略
【发布时间】:2016-02-04 08:33:48
【问题描述】:

在我的 AndroidManifest.xml 文件中,我有以下两行:

<uses-permission                        android:name="android.permission.CAMERA" />
<uses-feature android:required="false"  android:name="android.hardware.camera" />

但是当我上传到 Google Play 时,它表明需要相机。如果我使用 aapt 工具,它会显示: "uses-feature: name='android.hardware.camera'"

有人知道为什么它会忽略我的代码并要求设备有摄像头吗?

编辑:这是我的整个“使用”部分供参考:

<uses-permission                        android:name="android.permission.CAMERA" />
<uses-feature android:required="false"  android:name="android.hardware.camera" />
<uses-feature android:required="false"  android:name="android.hardware.camera.autofocus" />
<uses-feature android:required="false"  android:name="android.hardware.camera.front"/>

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

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

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

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

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

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

<uses-permission                        android:name="android.permission.VIBRATE" />
<uses-feature android:required="false"  android:name="android.hardware.vibrate" />

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

<uses-permission                        android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission                        android:name="asn.apps.asncrm.permission.C2D_MESSAGE" />
<uses-permission                        android:name="com.google.android.c2dm.permission.SEND" />
<uses-permission                        android:name="android.permission.WAKE_LOCK" />

<uses-feature android:required="false"  android:name="android.hardware.telephony"/>

【问题讨论】:

  • 为什么要在不需要摄像头硬件的情况下请求摄像头权限?
  • 应用中有一个地方可以打开相机拍照。但这是可选的,应用程序的其余部分不需要正常运行。
  • 不会解决您的问题,但您应该使用 android.hardware.camera2,因为在 API 21 中已弃用 android.hardware.cameradeveloper.android.com/reference/android/hardware/Camera.html
  • 你的最低 sdk 是多少?
  • minSdkVersion 15 targetSdkVersion 22

标签: android uses-feature


【解决方案1】:

尝试将此附加标签添加到您的 Android 清单中:

<uses-feature android:required="false"  android:name="android.hardware.camera.autofocus" />

原因是,according to the docsandroid.permission.CAMERA 权限意味着需要以下 2 个功能:android.hardware.cameraandroid.hardware.camera.autofocus.

[编辑]

此外,如果清单中有任何 &lt;uses-library&gt; 标记,则其中一个库可能需要相机功能。

【讨论】:

  • 感谢您的回复。我已经在那里有了它并编辑了我的答案以提供 androidmanifest.xml 的“使用”部分的其余部分
  • 您的清单中是否有任何&lt;uses-library&gt; 标签?如果是这样,其中一个库可能需要相机功能。
  • 我认为您在这里有所作为 - 我正在引用 PDF417.mobi 的类。如果他们以某种方式使相机成为必需品,有没有办法覆盖它?
  • 我不知道;如果有办法覆盖库的要求,我会感到惊讶,因为这会使库变得不可靠,并可能使您的应用程序崩溃。
  • 我引用的库是一个 .aar 文件。我能够解压缩 .aar 文件并编辑他们的 AndroidManifest.xml 文件并将 android:required="false" 添加到相机行。然后重新压缩文件并重新构建项目,它解决了我的问题
【解决方案2】:

在我想要覆盖相机权限的应用程序中,即使应用程序可用于没有相机的设备,我声明清单权限,如下所示。我已验证该应用可在不带摄像头的设备上的 Play 商店中使用。

不确定这是否能帮助您解决问题(因为您提到了使用第三方库),但请试一试并告诉我。

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

<uses-feature
    android:name="android.permission.CAMERA"
    android:required="false" /> // this is the one I have extra, please add and test

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2018-03-12
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多