2

我正在尝试制作一个记录设备上各种应用程序使用情况的应用程序。例如:国际足联 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" );
}

}

这是服务类中的代码:

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. 到 jelly bean 为止,您可以阅读日志并找出应用程序的进程何时启动以及何时关闭(或用户移动到另一个应用程序)。

  2. 您可以不时地轮询最近启动的应用程序或当前正在运行的进程。

  3. 您可以创建一个启动器应用程序,该应用程序将找出其中正在启动的应用程序。

当然,我写的每一种方法都有其缺陷,只是给你一个关于实际用法的线索,当然,由于android支持同时运行多个应用程序,我认为任何方法都不够。 .

于 2013-01-12T23:01:30.607 回答