【问题标题】:Android permission not granted未授予 Android 权限
【发布时间】: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_DISPLAYCONTROL_WIFI_DISPLAY 权限。关于我可能在这里遗漏的任何提示?

编辑:我使用的是 Android L。

【问题讨论】:

  • 您使用的是装有 Android M 的设备吗?
  • 你的测试设备的安卓版本是多少?
  • @CalumMcCall 如果您愿意分享,我很乐意看到此代码。目前正在从事一个类似的项目。
  • @bearsmahoney 不幸的是,我手头没有代码。但是,实际执行此操作的步骤记录在此处:stackoverflow.com/a/34182702/158703
  • @CalumMcCall 感谢您的提示!非常感谢。

标签: android android-wifi android-permissions


【解决方案1】:

这两个权限都具有signature 保护级别(至少在 Android 6.0 上 - 您需要研究该保护级别多年来是否发生了变化)。

因此,除非您的应用由平台签名密钥签名,否则您无法拥有这些权限,尽管您的清单中有这些权限。

【讨论】:

  • 我使用的是 5.1。假设他们确实具有签名保护级别,我有什么选择?是否可以自己使用签名密钥对应用程序进行签名?我可以绕过这个吗?
  • @CalumMcCall:“我有什么选择?” -- 构建您自己的自定义 ROM,然后使用您用于签署 ROM 的相同签名密钥对应用程序进行签名。或者,与设备制造商达成协议,将您的应用与他们的设备捆绑在一起,并由他们的签名密钥签名。
【解决方案2】:

我不知道这是否是你想要的,但你可以尝试使用这个权限:

<uses-permission android:name="android.permission.INTERNET" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2022-08-24
    • 1970-01-01
    相关资源
    最近更新 更多