我正在做整合服务监听器的android应用程序。如果我点击主菜单应用程序列表中的任何应用程序,这个我自己的应用程序应该得到click事件。我不知道这可能在android中吗?(ex)如果我点击列表中的Facebook应用程序,我自己的应用程序(有广播或任何听众)应该获得该被点击的应用程序的包名称。我怎么能这样做?
代码:
...
公共类MyService扩展了Service {
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();
}
}
但它仅显示此应用程序包名称。如果我不在这个应用程序中,&amp;点击其他应用程序,它将不会提取其包名。
答案 0 :(得分:0)
一种选择是检查活动服务列表:
重复循环运行服务,以检测列表中的新增内容。
获取有效服务,
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();