如何在android中获取设备菜单应用列表的点击事件

时间:2015-03-17 09:18:18

标签: android

我正在做整合服务监听器的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;点击其他应用程序,它将不会提取其包名。

1 个答案:

答案 0 :(得分:0)

一种选择是检查活动服务列表:

重复循环运行服务,以检测列表中的新增内容。

获取有效服务,

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();