6

ロギング目的で起動されたアクティビティの記録を保持する方法を考えていました。このインテントをインターセプトするには、どのブロードキャスト レシーバーをサブスクライブする必要がありますか? またはどのインテントフィルターを使用しますか? バックグラウンドである種の長期実行サービスを使用する必要があると考えています。

私の最初の目的は、主要なアプリケーション、ある種の歴史を追跡することです。

最終的に次のようなものを取得したい:

  • - アプリcom.android.xxxを起動
  • - アプリxx.yy.zzを起動
  • - アプリ xx.yy.zz がフォーカスを失った

前もって感謝します

編集 - そのアプリMyAppRankを参照してください。これはまさに私が意味することを行います

4

2 に答える 2

1

Intentアプリケーションが開始されたとき、またはアプリケーションがフォアグラウンドになったときのブロードキャストはありません。これらのイベントを取得するためにリスナーとしてフックできるものはありません。

これを行う方法 (MyAppRank のようなアプリが行う方法) は、次のメソッドを使用することですActivityManager

getRunningTasks()
getRunningAppProcesses()
getRecentTasks()

Service常に実行され、一定の間隔で のメソッドを呼び出して、どのActvityManagerタスクがフォアグラウンドにあるかを判断し、ユーザーが行った (または行っている) ことを「推測」できる を作成します。それは正確な科学ではありません。

注: API 21 (Android 5、Lollipop) の時点では、これは必要android.permission.GET_TASKSであり、機能しません。API 21 以降、セキュリティが強化され、アプリケーションはシステム内の他のタスクではなく、自身のタスクに関する情報のみを取得できます。

于 2015-06-24T08:06:41.220 に答える