Como obter tarefas recentes no Android "L"?

fundo

Meu aplicativo permite classificar uma lista de aplicativos no momento em que foram lançados recentemente.

O problema

A partir do Android "L", a funçãogetRecentTasks retornará apenas a lista de aplicativos lançados pelo aplicativo atual, conforme escrito nodocumentação:

Se seu aplicativo usar ActivityManager.getRecentTasks () ...

Com a introdução dos novos documentos simultâneos e tarefas de atividades, recurso na próxima versão (consulte Documentos e atividades simultâneos na tela Recentes abaixo), o método ActivityManager.getRecentTasks () agora está obsoleto para melhorar a privacidade do usuário. Para compatibilidade com versões anteriores, esse método ainda retorna um pequeno subconjunto de dados, incluindo as próprias tarefas do aplicativo de chamada e, possivelmente, outras tarefas não sensíveis (como a Página inicial). Se seu aplicativo estiver usando esse método para recuperar suas próprias tarefas, use android.app.ActivityManager.getAppTasks () para recuperar essas informações.

O mesmo está escrito ao usar o ADT para mostrar a documentação desta função (atualmente não disponível na Internet):

Este método está obsoleto. A partir de L, esse método não está mais disponível para aplicativos de terceiros: como a introdução de recentes centrados em documentos significa que ele pode vazar informações pessoais para o chamador. Para compatibilidade com versões anteriores, ele ainda retornará um pequeno subconjunto de dados: pelo menos as próprias tarefas do chamador (embora veja getAppTasks () para obter a maneira correta de recuperar essas informações) e, possivelmente, algumas outras tarefas, como a casa, conhecidas por não seja sensível.

Não entendo por que essa ação foi tomada, pois é fácil ver quais aplicativos o usuário possui e mesmo sem permissão.

O problema é que essa é uma grande restrição para esse recurso que eu adicionei, então espero que haja uma maneira de superar isso.

O que eu tentei

Por enquanto, usei apenas uma maneira heurística sobre quais aplicativos foram lançados recentemente - em vez disso, recebo a lista de processos em execução.

Eu também poderia usar o valor de importância dos processos e talvez o "importantReasonComponent", mas isso é apenas todas as heurísticas e suposições ...

A questão

Existe uma maneira de superar essa restrição? Alguma solução alternativa em que não pensei?

Talvez seja possível com root? Ou BusyBox?

questionAnswers(4)

yourAnswerToTheQuestion