如何修复HARDWARE_TEST权限错误?

时间:2013-03-08 13:29:49

标签: android android-permissions

我正在开发一个Android应用程序,它使用一些硬件部件,如相机或Wi-Fi,我正在使用HARDWARE_TEST权限:

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

我从来没有遇到任何问题,但现在突然间,当我日食和最明显的文件时,这一行显示了一个新的错误:

“权限仅授予系统应用”

我必须解决的唯一方法是删除此行。

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

编辑:

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

我的问题是在android:targetSdkVersion值中最明显的是15和proyect构建目标被检查API级别16(Android 4.1.2)

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

所以我把android:targetSdkVersion值改为16,Proyect属性&gt; Android&gt; “Proyect Buid Target”也检查了16。

1 个答案:

答案 0 :(得分:0)

Android Permissions有几个permission protection level:正常,危险,系统和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中的签名权限,因此只能授予具有相同签名的应用程序(由供应商签名)。因此,您的应用程序无法请求该权限。

如果要直接操作硬件,可能需要root设备。