Android 在 Manifest 中添加 <uses-feature>

Posted

技术标签:

【中文标题】Android 在 Manifest 中添加 <uses-feature>【英文标题】:Android Add <uses-feature> in Manifest 【发布时间】:2011-08-17 12:41:49 【问题描述】:

我很困惑在哪里添加

使用功能

清单中的标签。 我在我的应用程序中使用相机。我添加了权限,但我很困惑在哪里添加功能以使用前置摄像头。你能帮忙吗?

【问题讨论】:

【参考方案1】:

&lt;manifest&gt;标签下添加这个,像这样:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.lalllala">
       <uses-permission android:name="android.permission.INTERNET" />
       <uses-permission android:name="android.permission.VIBRATE" />
       <uses-feature android:name="android.hardware.camera" />
          <application android:icon="@drawable/icon" android:label="lalla" android:debuggable="true">

          </application>
    </manifest>

【讨论】:

+1 如果你也加了&lt;uses-feature...&gt;的例子,那就更好了:)【参考方案2】:

&lt;uses-feature&gt; - 声明应用程序使用的单个硬件或软件功能。

声明的目的是通知任何外部实体您的应用程序所依赖的硬件和软件功能集。该元素提供了一个 required 属性,可让您指定您的应用程序是否需要并且在没有声明的功能的情况下无法运行,或者它是否更喜欢拥有该功能但可以在没有它的情况下运行。由于功能支持可能因 Android 设备而异,因此该元素在让应用程序描述其使用的设备变量功能方面发挥着重要作用。 read for more

以下是访问Device Front Camera

的示例代码
public Camera openFrontFacingCamera() 
int cameraCount = 0;
Camera ffCam = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();

// Find the total number of cameras available
cameraCount = Camera.getNumberOfCameras();

// Find the ID of the CAMERA_FACING_FRONT & open it
for (int camIdx = 0; camIdx < cameraCount; camIdx++) 
    Camera.getCameraInfo(camIdx, cameraInfo);
    if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) 
        try 
            ffCam = Camera.open(camIdx);
         catch (RuntimeException e) 
            Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
        
    


    return ffCam;

需要以下权限

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

更多信息请阅读Google android developer API docCamera,Camera.CameraInfo

【讨论】:

您从开发站点复制并发布了此内容,并没有表现出实际回答 OP 问题的努力。失败 你是对的,我这样做是因为这是最好的解释 why to use &lt;uses-feature&gt; tag in manifest by Google 'android_developer' site。我在这里复制了文字,只是为了有一个简短的解释,如果人们想阅读更多内容,请点击它的页面链接。 我们不能简单地说 吗? &lt;uses-feature&gt; 唯一目的是通知任何外部实体您的应用程序所依赖的硬件和软件功能集。 简而言之,我们可以说 uses-feature 元素描述了您的应用程序使用的设备变量功能。 其中,&lt;uses-permission&gt; 请求必须授予应用程序才能使用的权限正确操作。 安装应用程序时,用户授予权限。不允许合并这两者。【参考方案3】:

在清单标签下添加:

<!-- Request the camera permission -->
    <uses-permission
        android:name="android.permission.CAMERA" />
    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

【讨论】:

【参考方案4】:

这样写标签顺序

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

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

    <application>

    </application>
</manifest>

【讨论】:

只需像这样更改标签顺序,然后查看 androidmanifest xml 文件 dtd 或 xsd

以上是关于Android 在 Manifest 中添加 <uses-feature>的主要内容,如果未能解决你的问题,请参考以下文章

在manifest中添加权限和在untiy中android的sd卡的根目录

解决Android Studio添加依赖时出现“Manifest merger failed

fragment需不需要在android manifest里注册

从manifest android中删除额外的不需要的权限

AS添加依赖库提示Manifest merger failed解决办法

编译时,Android Manifest 会导致问题阻止其运行?