【问题标题】:Android drawing on top of other apps >23 APIAndroid 在其他应用之上绘图 >23 API
【发布时间】:2016-01-15 09:58:14
【问题描述】:

似乎从 Android API 23 开始,您必须明确请求在其他应用程序上绘制的权限。

从 API 级别 23 开始,除非应用在其清单中声明 SYSTEM_ALERT_WINDOW 权限,并且用户明确授予应用此功能,否则应用无法在其他应用之上绘图。

第二个要求(您必须发送一个意图)实施得非常糟糕,因为它没有弹出带有允许/禁止按钮的新权限窗口,而是将用户发送到一个全新的设置页面,用户必须在其中切换切换按钮,然后导航返回以返回应用程序。

如果不满足第二步,应用会抛出Unable to add window permission denied for this window type错误。

但是 - Twilight 或 Facebook Messenger 等应用程序不需要用户切换该权限(我没有导航到该设置屏幕),但它们能够覆盖所有应用程序。

Facebook、Twilight 和类似应用如何绕过这一新要求?

【问题讨论】:

  • 致电谷歌。告诉他们您作为 facebook 很重要,并希望为您删除该权限。他们将您列入白名单。问题解决了。
  • @ChrisFranklin 如果只是……但我认为法律不允许将某些应用列入白名单。
  • 我是认真的。它不仅是 100% 合法的,而且是常见的做法。像这样的应用程序就是所谓的第二方应用程序。他们有更宽松的许可要求,因为他们与 Google 签订了责任合同。在其中一个应用程序上工作过,相信我,它们是存在的。如果您想成为第二方应用程序,请变得更受欢迎并被视为离不开的东西。

标签: android


【解决方案1】:

不是直接解决问题,而是解决方法 - 将 android:targetSdkVersion 设置为 22

这仍然适用于 Android 6,但您将失去一些 API23 附带的功能。

【讨论】:

    【解决方案2】:

    https://stackoverflow.com/a/33895409/1979882

    使用谷歌

    用户可以手动设置此属性:

    您可以使用以下方法阅读它们: Settings.canDrawOverlays(context);

    【讨论】:

    • 阅读我的帖子,用户必须通过设置页面(而不是弹出窗口)来设置这些权限,这对用户不友好。
    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多