android - 我怎样才能检测到最喜欢的 Android 应用程序已启动?

标签 android android-activity android-launcher

我想实现一个可以检测启动了哪个应用程序的应用程序,然后用它做点什么!

例如,我在我的应用程序中有一个已安装应用程序的列表,并标记一个最喜欢的应用程序。当我从默认启动器或任何方式启动标记的应用程序时,我可以检测到它并通过后台服务或广播接收器对其执行某些操作(例如启动 toast 消息)。

我该怎么做?

最佳答案

这是不可能的.. 能够监控所有 Intent 会使 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();

关于android - 我怎样才能检测到最喜欢的 Android 应用程序已启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920344/

相关文章:

android - 获取谷歌地图android v2中位置的边界

android - 在 Android 中恢复 Activity 状态

android - 为什么 Activity 正在重启?如何避免?

android - 从 ics 中的库存启动器中删除指向我的应用程序的快捷方式

Android MediaPlayer 仅播放 m3u8 音频流

android - 在 Logcat 中打印 InputStream

Android 使用加速度计数据计算速度

android - Facebook Intent.ACTION_SEND 始终返回 0 作为 resultCode

android - 如何以编程方式从设置中设置默认启动器?

java - 如何在android中的设备启动时启动服务?