0

我正在开发一个使用一些硬件部件(如相机或 Wi-Fi)的 android 应用程序,并且我在清单中使用 HARDWARE_TEST 权限:

<uses-permission android:name="android.permission.HARDWARE_TEST">

我从来没有遇到过任何问题,但是现在突然当我 eclipse 和 manifiest 文件时,这一行中显示了一个新错误:

“权限仅授予系统应用程序”

我必须修复它的唯一方法是删除这一行。

为什么会出现这个错误??我该如何解决?谢谢

编辑:

我找到了解决方案并回答了我自己的问题:

我的问题出在 android:targetSdkVersion 中,manifiest 的值为 15,并且 proyect 构建目标已检查 API 级别 16(Android 4.1.2)

<uses-sdk
    android:minSdkVersion="2"
    android:targetSdkVersion="15" />

所以我已将 android:targetSdkVersion 值更改为 16,并且 Proyect 属性 > Android > “Proyect Buid Target”也检查了 16。

4

1 回答 1

0

Android Permissions有几种权限保护级别:Normal、Dangerous、System 和 signatureOrSystem。

signatureOrSystem 权限只能授予系统应用程序。对于签名级别的权限:

仅当请求应用程序使用与声明该权限的应用程序相同的证书签名时,系统才会授予该权限。如果证书匹配,系统会自动授予权限,无需通知用户或请求用户明确批准。

这是权限定义语法。

下面是 HARDWARE_TEST 权限的定义:

<!-- Allows access to hardware peripherals.  Intended only for hardware testing -->
<permission android:name="android.permission.HARDWARE_TEST"
    android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
    android:protectionLevel="signature"
    android:label="@string/permlab_hardware_test"
    android:description="@string/permdesc_hardware_test" />

它是Android 4.2中的签名权限,因此只能授予具有相同签名(由供应商签名)的应用程序。因此,您的应用程序无法请求该权限。

如果你想直接操作硬件,你可能需要一个有根设备。

于 2013-03-08T13:31:33.527 回答