如何停止应用程序并从服务启动活动?

时间:2013-07-24 14:12:49

标签: android android-service

我正在尝试检测某些应用程序的启动,例如设置。我创建了一个服务,我可以获得所有应用程序的名称,然后启动一个Activity。我想停止启动的应用程序并在后台运行活动,而不是在backgroound中。我的服务中使用的代码如下。新活动已启动,但仍处于后台。

public int onStartCommand(Intent intent, int flags, int startid) {

        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                try {
                    ActivityManager am = (ActivityManager) context
                            .getSystemService(Activity.ACTIVITY_SERVICE);
                    final List<RunningTaskInfo> recentTasks = am
                            .getRunningTasks(Integer.MAX_VALUE);
                    Log.d("liste des applications ", recentTasks.toString());

                    for (int i = 0; i < recentTasks.size(); i++) {
                        Log.d("Executed app",
                                "Application executed : "
                                        + recentTasks.get(i).baseActivity
                                                .toShortString() + "\t\t ID: "
                                        + recentTasks.get(i).id + "");
                        Log.d("============Executed app ======", recentTasks
                                .get(i).topActivity.getShortClassName());

                        if ((recentTasks.get(i).topActivity.getShortClassName()
                                .equals((".Settings"))) && (printed == false)) {
                            Log.d("*******====testestesttest====***********", recentTasks
                                    .get(i).topActivity.getShortClassName());
                            Intent intent = new Intent(LogAnalyserService.this, LauncherGridActivity.class);
//                          intent.setClass(this, LauncherGridActivity.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent); 

                            printed = true;
                        }

                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

Process.killProcess( Process.processPid() );

但是你需要知道进程的pId。