未授予 Android 权限
Posted
技术标签:
【中文标题】未授予 Android 权限【英文标题】:Android permission not granted 【发布时间】:2016-03-08 09:30:45 【问题描述】:我创建了自己的 android.jar,因此我可以使用隐藏的 API 调用 'DisplayManager.connectWifiDisplay()'。
当我运行应用程序并调用该方法时,通过 Wifi Direct 连接到显示器后,
我得到以下异常:
java.lang.SecurityException:连接到 wifi 显示器所需的权限:用户 10105 和当前进程都没有 android.permission.CONFIGURE_WIFI_DISPLAY。 在 android.os.Parcel.readException(Parcel.java:1546) 在 android.os.Parcel.readException(Parcel.java:1499) 在 android.hardware.display.IDisplayManager$Stub$Proxy.connectWifiDisplay(IDisplayManager.java:344) 在 android.hardware.display.DisplayManagerGlobal.connectWifiDisplay(DisplayManagerGlobal.java:309) 在 android.hardware.display.DisplayManager.connectWifiDisplay(DisplayManager.java:404)
但是,我在 AndroidManifest 中包含了 CONFIGURE_WIFI_DISPLAY 和 CONTROL_WIFI_DISPLAY 权限。关于我可能在这里遗漏的任何提示?
编辑:我使用的是 Android L。
【问题讨论】:
您使用的是装有 Android M 的设备吗? 你的测试设备的安卓版本是多少? @CalumMcCall 如果您愿意分享,我很乐意看到此代码。目前正在从事一个类似的项目。 @bearsmahoney 不幸的是,我手头没有代码。但是,实际执行此操作的步骤记录在此处:***.com/a/34182702/158703 @CalumMcCall 感谢您的提示!非常感谢。 【参考方案1】:这两个权限都具有signature
保护级别(至少在 Android 6.0 上 - 您需要研究该保护级别多年来是否发生了变化)。
因此,除非您的应用由平台签名密钥签名,否则您无法拥有这些权限,尽管您的清单中有这些权限。
【讨论】:
我使用的是 5.1。假设他们确实具有签名保护级别,我有什么选择?是否可以自己使用签名密钥对应用程序进行签名?我可以绕过这个吗? @CalumMcCall:“我有什么选择?” -- 构建您自己的自定义 ROM,然后使用您用于签署 ROM 的相同签名密钥对应用程序进行签名。或者,与设备制造商达成协议,将您的应用与他们的设备捆绑在一起,并由他们的签名密钥签名。【参考方案2】:我不知道这是否是你想要的,但你可以尝试使用这个权限:
<uses-permission android:name="android.permission.INTERNET" />
【讨论】:
以上是关于未授予 Android 权限的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 中未授予 Action_Call 权限