当有来电时,如何知道哪个应用正在打开?

时间:2016-08-15 07:50:20

标签: android incoming-call

我使用广播接收器在有来电时收到通知。现在我需要知道一个特定的应用程序,比如Facebook,当呼叫恰好在我的工作时打开。

这可能吗?

1 个答案:

答案 0 :(得分:1)

收到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版本中不推荐使用上述功能。我只是通过代码片段给你一个例子。