【发布时间】:2013-07-29 10:12:06
【问题描述】:
我有一个准备好运行的应用程序,它需要有一个后置摄像头。显然,它在清单中具有<uses-permission android:name="android.permission.CAMERA" /> 权限,但这并不排除诸如 Nexus 7 平板电脑等只有前置摄像头的设备。
没有经过手动排除设备我该怎么做?
【问题讨论】:
我有一个准备好运行的应用程序,它需要有一个后置摄像头。显然,它在清单中具有<uses-permission android:name="android.permission.CAMERA" /> 权限,但这并不排除诸如 Nexus 7 平板电脑等只有前置摄像头的设备。
没有经过手动排除设备我该怎么做?
【问题讨论】:
我只知道一个程序化的答案。 正如this question 所示,您可以使用
PackageManager pm = context.getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
如果设备没有后置摄像头,则返回 false(在 Nexus 7 上为 false)
国旗
FEATURE_CAMERA_FRONT
将仍然是正确的。因此,您可以在启动您的第一个 Activity 时使用此测试,并在您的应用说明中添加一个大警告。
但是,除了手动排除设备之外,我不知道如何使用清单来排除符合此条件的设备。
编辑:链接为相关的另一个问题指出清单的此使用功能标志:
<uses-feature android:name="android.hardware.camera" android:required="false"/>
根据文档:
应用程序使用设备的摄像头。如果设备支持多个摄像头,则应用程序使用背对屏幕的摄像头。
所以对于仅面向前端的设备来说有点模棱两可。
【讨论】:
你可以使用在android中给出的uses-feature标签。您必须在清单文件中声明此标签。它会根据给定的条件自动过滤设备。只需像这样在清单中使用这个 uses-feature 标记:
<uses-feature android:name="android.hardware.camera" android:required="true" />
更多详情请点击以下链接:- Android Uses Premission
【讨论】: