2

デバイス上のさまざまなアプリの使用状況を記録するアプリを作成しようとしています。例: Fifa の場合は 10 分、GTA の場合は 23 分などです。現在、常に実行されるサービスがあり、(intent.action.PACKAGE_CHANGED を使用して) アプリケーション パッケージが変更されたときにトリガーされると思われるブロードキャスト レシーバーがありますが、残念ながら内部にコードがあります。ブロードキャストは実行されません。誰かが問題をほのめかしたり、これを行う他の方法を教えてくれたりしていただければ幸いです。ありがとう

public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
     Log.d("BROADCAST", "Works fine" );
}

}

これは Service クラス内のコードです。

public int onStartCommand(Intent intent, int flags, int startId) {
    IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_CHANGED);
    ScreenReceiver recevier = new ScreenReceiver();
    registerReceiver(recevier, filter);runningApps();

    return START_STICKY;
}
4

1 に答える 1

1

PACKAGE_CHANGEDインテントは、アプリ自体が変更された場合にのみ送信されます。アプリの使用状況とは関係ありません。

実際、アプリの使用状況を監視する公式の方法はありません。同様の解決策しかありません:

  1. ゼリービーンまで、ログを読んで、アプリのプロセスがいつ開始され、いつ閉じられたか(またはユーザーが別のアプリに移動したか)を知ることができました。

  2. 最近起動したアプリや現在実行中のプロセスについて、時々ポーリングできます。

  3. その中で起動されているアプリを見つけるランチャーアプリを作成できます。

もちろん、私が書いた方法にはそれぞれ欠陥があり、実際の使用法についての手がかりを与えるだけです.もちろん、Androidは同時に複数のアプリを実行することをサポートしているため、どの方法でも十分ではないと思います. .

于 2013-01-12T23:01:30.607 に答える