我正在做一个集成了Service listeners的android应用程序。如果我点击主菜单应用程序列表中的任何应用程序,我自己的应用程序应该会得到点击事件。我不知道这在安卓系统中可能吗?(例如)如果我点击列表中的facebook应用程序,我自己的应用程序(有广播或任何听众)应该会得到点击应用程序的包名。我怎么能那样做?
代码:
公共类MyService扩展服务{
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
Toast.makeText(this, "Service was Created", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager
.getRunningTasks(1);
ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
String activityOnTop = ar.topActivity.getClassName();
Toast.makeText(this, activityOnTop, Toast.LENGTH_LONG).show();
}
enter code here
@Override
public void onDestroy() {
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
但它只显示此应用程序包名称。如果我退出了这个应用程序,&单击其他应用程序,它将不会获取其程序包名称。
一个选项是检查活动服务列表:
反复循环运行服务,以检测列表中的新添加内容。
要获得活动服务,
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();