我想实现一个应用程序,它可以检测启动的应用程序,用它做一些事情!
例如,我在我的应用程序中列出了已安装的应用程序,并标记了一个最喜欢的应用程序。当我从默认启动器或任何方式启动标记的应用程序时,我可以通过后台服务或广播接收器检测它并执行某些操作(例如,启动Toast消息)。
我该怎么做?
答案 0 :(得分:1)
这不可能..能够监控所有意图会使android极不安全
http://groups.google.com/group/andro...ddc9d36a24d77b
但是有很多方法可以知道应用程序何时启动。你必须要有创意。 这将为您提供所有正在运行的应用程序的列表。
代码:
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
然而,要知道应用程序何时启动,您需要一个定时循环,然后检查列表的版本之间,看看是否有新的应用程序。这会吸吮汁液而且不合理
AppProtector似乎访问了事件日志。也许你可以将ContentObserver附加到事件日志中 http://developer.android.com/referen.../EventLog.html http://developer.android.com/referen...tObserver.html
修改强>
<强>有趣。强> 我也找到了解决问题的方法。
当您从启动器打开任何应用程序时,代码将返回已打开应用程序的信息,因此您需要将程序包名称与您已存储在应用程序数据库中的应用程序包名称进行比较。
代码:
String str = ((ActivityManager.RunningTaskInfo)this.am.getRunningTasks(1).get(0)).topActivity.getPackageName();