0

我需要我的应用程序来监控 Android 设备上已安装的应用程序,并获取当前在前台运行的应用程序的详细信息。我能想到的两种可能的解决方案是:

1.定义 粘性服务并持续检查正在使用的应用程序将是一种选择,但这会消耗大量电池。

2.我想到的另一种可能的方法是实现广播接收器。我们可以将意图过滤器设置为SET_ALARMRECEIVE等操作。Android 为每个可能的事件提供了操作,例如发送消息或接收语音邮件。

所以我的问题是启动应用程序是否存在任何操作

如果是这样,我将只从我的广播接收器运行一个意图服务,这将完成其余的工作,而无需像我在第 1 点中提到的那样连续轮询应用程序是否已打开。

任何人都可以帮助或提供替代解决方案吗?

4

1 回答 1

0

是的,我想没有办法注册广播接收器来检测应用程序启动。其中一种方法可能是(类似于您的建议):

// TO GET INSTALLED APPS
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> packageList = getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : packageList) {
    Log.d("ResolveInfo", "Package: " + resolveInfo.activityInfo.packageName);
}

// TO GET INFO OF RUNNING PROCESSES
ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcessInfos = activityManager.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcessInfos) {
    Log.d("runningAppProcessInfo", "Running process name: " + runningAppProcessInfo.processName);
}

并使用Service轮询您感兴趣的应用程序的状态。

于 2015-03-12T09:20:59.900 回答