背景
我的应用程序允许按最近启动的时间对应用程序列表进行排序。
问题
从 Android "L" 开始,函数getRecentTasks将只返回当前应用程序已启动的应用程序列表,如文档中所述:
如果您的应用使用 ActivityManager.getRecentTasks()...
随着在即将发布的版本中引入新的并发文档和活动任务功能(请参阅下面最近屏幕中的并发文档和活动),现在不推荐使用 ActivityManager.getRecentTasks() 方法以改善用户隐私。为了向后兼容,此方法仍然返回其数据的一小部分,包括调用应用程序自己的任务和可能的其他一些非敏感任务(例如 Home)。如果您的应用正在使用此方法来检索自己的任务,请使用 android.app.ActivityManager.getAppTasks() 来检索该信息。
使用 ADT 显示此功能的文档时也是如此(目前在 Internet 上不可用):
此方法已弃用。从 L 开始,第三方应用程序不再可以使用此方法:因为引入以文档为中心的最近消息意味着它可能会将个人信息泄露给调用者。为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务(尽管请参阅 getAppTasks() 以了解获取该信息的正确支持方式),以及可能已知的其他一些任务,例如 home不要敏感。
我不明白为什么要采取这种行为,因为很容易看到用户拥有哪些应用程序,即使没有任何许可。
问题是,这是我添加的这个功能的一个很大的限制,所以我希望有办法克服这个问题。
我试过的
目前,我只对最近启动了哪些应用程序使用了启发式方法——我得到了正在运行的进程列表。
我也可以使用流程的重要性值,也许还有“importanceReasonComponent”,但这只是所有的启发式和猜测......
问题
有没有办法克服这个限制?有什么我没有想到的解决方法吗?
也许它是可能的根?还是忙箱?