バックグラウンド
私のアプリでは、最近起動された時間でアプリ リストを並べ替えることができます。
問題
Android "L" の時点で、関数getRecentTasksは、ドキュメントに記載されているように、現在のアプリが起動したアプリのリストを返すだけです:
アプリで ActivityManager.getRecentTasks() を使用している場合...
今後のリリースでの新しい同時ドキュメントおよびアクティビティ タスク機能の導入により (以下の [最近使用した画面での同時ドキュメントおよびアクティビティ] を参照)、ActivityManager.getRecentTasks() メソッドは、ユーザーのプライバシーを改善するために非推奨になりました。下位互換性のために、このメソッドは、呼び出し元のアプリケーション自体のタスクと、場合によってはその他の非機密タスク (ホームなど) を含む、データの小さなサブセットを返します。アプリがこのメソッドを使用して独自のタスクを取得している場合は、代わりに android.app.ActivityManager.getAppTasks() を使用してその情報を取得します。
ADT を使用してこの関数のドキュメントを表示する場合も同じことが書かれています (現在インターネットでは利用できません)。
このメソッドは非推奨です。L の時点で、このメソッドはサードパーティのアプリケーションでは使用できなくなりました。ドキュメント中心の最近の機能の導入により、呼び出し元に個人情報が漏洩する可能性があるためです。下位互換性のために、データの小さなサブセットを返します。少なくとも呼び出し元自身のタスク (ただし、その情報を取得するためにサポートされている正しい方法については getAppTasks() を参照してください)。敏感にならないでください。
ユーザーがどのアプリを持っているかを簡単に確認でき、許可がなくても簡単に確認できるため、なぜこの行為が行われたのかわかりません。
これは私が追加したこの機能の大きな制限なので、これを克服する方法があることを願っています.
私が試したこと
今のところ、最近起動されたアプリについてのヒューリスティックな方法のみを使用しました。代わりに、実行中のプロセスのリストを取得します。
プロセスの重要度の値とおそらく「importanceReasonComponent」を使用することもできますが、これはすべてヒューリスティックと推測にすぎません...
質問
この制限を克服する方法はありますか? 私が考えていない回避策はありますか?
多分それはルートで可能ですか?またはビジーボックス?