2013-01-12 38 views
2

我正在尝试制作一个应用程序,该应用程序会记录设备上各种应用程序的使用情况。例如:国际足联10分钟,GTA 23分钟等现在我有服务,不断运行,我有一个广播接收器,假设当任何应用程序包更改(使用intent.action.PACKAGE_CHANGED)时触发,但不幸的是代码里面广播从不运行。我很感激,如果有人能够暗示这个问题,或者告诉我其他任何方式来做到这一点。由于在android中更改应用程序的监听器

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

}

,这是服务类中的代码:当应用程序iteself改变

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; 
} 

回答

1

PACKAGE_CHANGED意图只会被发送。它与应用程序的使用无关。

实际上,没有官方的方式来监控应用的使用情况。只有类似的解决方案:

  1. 高达果冻豆,你可以读取日志,并找出当一个应用程序的进程已经开始,当它关闭(或用户移动到另一个应用程序)。

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

  3. 您可以创建一个启动器应用程序,该应用程序将查明在其中启动了哪些应用程序。

当然

,每一个我写的方法有其缺陷,并只给你一个关于实际使用的线索,由于在同一时间运行多个应用程序,我不Android支持,当然认为任何方法都行不通。

相关问题