我正在使用广播接收器在有来电时得到通知。现在,我需要知道某个特定应用程序(例如 Facebook)是否正在打开,而该呼叫恰好完成了我的工作。
这可能吗?
我正在使用广播接收器在有来电时得到通知。现在,我需要知道某个特定应用程序(例如 Facebook)是否正在打开,而该呼叫恰好完成了我的工作。
这可能吗?
收到后BroadcastReceiver
,检查当前屏幕上的活动是否不是Home
屏幕。
要检查屏幕上的活动,请ActivityManager
通过获取正在运行的任务列表来获取最常用的活动。
例如:
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(2);
ComponentName componentInfo = taskInfo.get(1).topActivity;
String callHandlerPackageName = componentInfo.getPackageName();
Log.d("Call_incoming", "Call_receiver_app ::" + callHandlerPackageName);
您的清单需要以下权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
注意:上述功能在Marshmallow
版本中已弃用。我只是在这里通过代码片段给你一个例子。