如何知道来电时正在打开哪个应用程序?
How to know which app is opening when an incoming call come?
我正在使用广播接收器在有来电时收到通知。现在我需要知道某个特定的应用程序(比如 Facebook)是否正在打开,而这恰好是我的工作。
这可能吗?
收到BroadcastReceiver
后,检查当前屏幕上的activity是不是Home
屏幕。
要在屏幕上查看 activity,请使用 ActivityManager
通过获取 运行 任务列表获取顶部 activity。
例如:
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
版本已弃用上述功能。我只是通过代码片段在这里给你一个例子。
我正在使用广播接收器在有来电时收到通知。现在我需要知道某个特定的应用程序(比如 Facebook)是否正在打开,而这恰好是我的工作。
这可能吗?
收到BroadcastReceiver
后,检查当前屏幕上的activity是不是Home
屏幕。
要在屏幕上查看 activity,请使用 ActivityManager
通过获取 运行 任务列表获取顶部 activity。
例如:
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
版本已弃用上述功能。我只是通过代码片段在这里给你一个例子。