android中更改应用程序的侦听器

android中更改应用程序的侦听器,android,listener,packages,Android,Listener,Packages,我正在尝试制作一个应用程序,记录设备上各种应用程序的使用情况。e、 g:国际足联10分钟,GTA 23分钟,等等。现在我有一个持续运行的服务,我有一个广播接收器,当任何应用程序包更改时(使用intent.action.package_更改),它会触发,但不幸的是,广播中的代码从未运行过。如果有人能提示出问题或告诉我其他方法,我将不胜感激。谢谢 public class ScreenReceiver extends BroadcastReceiver { @Override public void

我正在尝试制作一个应用程序,记录设备上各种应用程序的使用情况。e、 g:国际足联10分钟,GTA 23分钟,等等。现在我有一个持续运行的服务,我有一个广播接收器,当任何应用程序包更改时(使用intent.action.package_更改),它会触发,但不幸的是,广播中的代码从未运行过。如果有人能提示出问题或告诉我其他方法,我将不胜感激。谢谢

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;
}
仅当应用程序自身发生更改时,才会发送意图。这与应用程序的使用无关

事实上,没有官方的方法来监控应用程序的使用。只有类似的解决方案:

  • 在jelly bean之前,您可以阅读日志,了解某个应用程序的进程何时启动、何时关闭(或用户移动到另一个应用程序)

  • 您可以不时对最近发布的应用程序或当前正在运行的进程进行轮询

  • 您可以创建一个启动器应用程序,该应用程序将查找其中正在启动的应用程序

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