【问题标题】:GET_TASKS Permission DeprecatedGET_TASKS 权限已弃用
【发布时间】:2015-03-14 12:06:21
【问题描述】:

我有一个使用此权限的安全应用(App Locker):

android.permission.GET_TASKS

在 android Lollipop 中,此权限已被弃用,我希望我的应用在 +21 API 中运行。
谁能指导我怎么做?

谢谢:)

【问题讨论】:

标签: android permissions deprecated


【解决方案1】:

它被弃用是有原因的。 android.permission.GET_TASKS 的保护级别已提升到 signatureOrSystem。 对此没有简单且无害的解决方案。

从 LOLLIPOP 开始,第三方应用程序不再可以使用此方法:引入以文档为中心的最新消息意味着它可能会将个人信息泄露给调用者。为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务(尽管请参阅 getAppTasks() 以了解获取该信息的正确支持方式),以及可能已知的其他一些任务,例如 home不要敏感。

http://developer.android.com/reference/android/app/ActivityManager.html#getRecentTasks(int,%20int)

【讨论】:

  • getAppTasks() 仅适用于android 5。如果我想使用低于android 5的我该怎么办?
  • @nAkhmedov 你有什么了解吗?
【解决方案2】:

我看到了一个新的权限 REAL_GET_TASKS,据说是用来代替 GET_TASKS:

应用可以请求的新版本 GET_TASKS,因为 GET_TASKS 并没有真正提供对任务信息的访问权限。我们需要这个新的,因为有许多现有的应用程序使用添加库并且具有验证代码来确保应用程序通过查看是否已被授予权限来请求 GET_TASKS 权限......如果没有,它会杀死应用程序 带有关于心烦意乱的信息。所以我们需要让它继续看起来像应用程序正在获得该权限,即使它永远不会被检查,并且新的特权应用程序现在可以请求这个权限以进行真正的访问。

查看 Android 代码差异:https://android.googlesource.com/platform/frameworks/base/+/2d7576b%5E!/

【讨论】:

  • 你知道怎么用吗?
  • GET_TASKS 是一个“正常”权限,可由 3rd 方应用程序请求。但是,REAL_GET_TASKS 的保护级别是签名或系统,不能被 3rd 方应用程序请求。
  • 我认为这与用于签署应用程序的证书有关,而不是与用户凭据有关。这可能会有所帮助:在link 上获取 Android 上的“签名”权限级别
  • 你的意思是“adb shell pm grant”命令?这无济于事,因为此权限已被授予,只是它不会像以前版本的 Android 那样做。它只会显示您当前应用已启动的应用。
  • 感谢提供提交,非常有趣
猜你喜欢
  • 1970-01-01
  • 2012-07-03
  • 2014-09-28
  • 2011-03-27
  • 2014-02-12
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多