我正在开发一个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。
答案 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设备。