GET_TASKS权限已被弃用。

46

我有一个安全应用(应用锁)使用这个权限:

android.permission.GET_TASKS
在Android Lollipop中,此权限已过时,我希望我的应用程序在API 21以上的版本中正常工作。有人可以指导我吗?
谢谢 :)

在Android Lollipop中,这个权限已经被废弃了,我想要我的应用能够在API 21及以上的版本中正常运行。有人可以给我指点一下如何做吗?

谢谢 :)


@ErumHannan 我找到了这个答案:https://dev59.com/oV4c5IYBdhLWcg3wUI0N#28066580 - Saman Sattari
2个回答

32

该方法被弃用的原因是android.permission.GET_TASKS的保护级别已被提升至signatureOrSystem。目前没有易于实现且无害的解决方案。

自LOLLIPOP版本起,第三方应用程序不再可以使用此方法:文档为中心的最近任务功能的引入意味着它可能会向调用者泄露个人信息。为了向后兼容,它仍将返回其数据的一个小子集:至少是调用者自己的任务(虽然请参阅getAppTasks()以获取正确支持的检索信息的方法),以及可能一些其他已知不敏感的任务,如home。

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


9
若要在 Android 5 以下使用 getAppTasks() 函数该怎么办?此函数仅适用于 Android 5 及以上系统。 - nAkhmedov
@nAkhmedov,你有关于这个问题的任何消息吗? - kvaruna

11

我看到了一种新的权限REAL_GET_TASKS,据说可以代替GET_TASKS:

应用程序可以请求获取任务信息的GET_TASKS的新版本,因为GET_TASKS实际上并没有提供访问任务信息的权限。我们需要这个新版本,因为有很多现有应用程序使用添加库等功能来验证应用程序是否已通过请求GET_TASKS权限获得授权...如果没有获得授权,它将杀死应用程序并显示一个关于不满的消息。因此,尽管永远不会被检查,但我们仍然需要让它看起来像应用程序正在获得该权限,并且新的特权应用程序现在可以真正请求这个权限以获得访问。

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


你知道如何使用它吗? - android developer
2
GET_TASKS是一个“普通”的权限,可以被第三方应用程序请求。然而,REAL_GET_TASKS的保护级别是签名或系统,不能被第三方应用程序请求。 - Gürol Canbek
我认为这与用于签署应用程序的证书有关,而不是用户凭据。这可能会有所帮助:在Android上获取“签名”权限级别,请参阅链接 - Gürol Canbek
你是指“adb shell pm grant”命令吗?它不会有帮助,因为该权限已经被授予,只是与之前的Android版本不同。它只会显示您的当前应用程序启动的应用程序。 - android developer
1
感谢您提供提交,非常有趣。 - HenriqueMS
仅系统应用程序被授予权限。 - egorikem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接