11

この質問についてスタックオーバーフローを検索したところ、 Android、他のアプリが起動されたときに検出、ホーム/デスクトップからのアプリケーションの起動を検出する信頼できる方法? 、これは私の質問に答えますが、まだ十分ではありません。

やりたいこと デバイスのユーザーに最近のアプリのリストと最も使用されているアプリのリストを表示するウィジェット/アプリを作成したいと思います。

問題 最も使用されているアプリのリストを作成するために、アプリに関する正確なデータを取得するにはどうすればよいですか。

拠点情報

  • すべてにアクセスできるように、独自の Android OS (4.2 ベース) コードをコンパイルしています。
  • ランチャーも開発中です。
  • CTS に合格し、Google の承認を受ける必要があります。
  • システム権限でアプリを作成できます。
  • これが Google のセキュリティ上の問題である可能性があることは承知しています。

いくつかの解決策

最近のアプリは、ActivityManager の getRecentApps メソッドを介して見つけることができるため、ここで問題が発生します。

これについてWebを検索したところ、次の解決策がすでに見つかりました。

  1. サービスを使用して、ActivityManager、getRunningTasks メソッドを X 秒ごとにクエリし、リストを作成します (不正確な情報、大量のバッテリーも使用)。
  2. logcat を使用してこの情報を取得します (私にはハックのように思えます。システム権限が必要です)
  3. この情報を提供するために activityManager 自体を変更します (ほとんどの場合、CTS テストに失敗します)。
  4. ランチャーを使用して、起動されたアプリを確認します (他のアプリ内で起動されたアプリを見逃します)

他に見逃したことはありますか?

前もって感謝します, ティアゴ・コスタ

4

1 に答える 1

1

Android のデフォルトの最近のアプリ ダイアログの実装は、あなたにとって最良のリファレンスです。こちらをご覧ください。reloadButtons() を確認してください。

final ActivityManager am = (ActivityManager)
                context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RecentTaskInfo> recentTasks =
                am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);

同様の方法で試すことができます..

于 2013-04-24T18:51:35.923 に答える