2014-01-02 3 views
0

Я работаю в приложении, чтобы следить за тем, как долго ребенок может играть в игру на устройстве Android.Как закрыть сторонние приложения моим собственным приложением на Android

Я знаю, как получить список забегов приложений с помощью:

List<RunningTaskInfo> tasks = activityManager.getRunningTasks(1);//Integer.MAX_VALUE 

Теперь я хочу способ закрыть это приложение, или просто положить его в фоновом режиме.

Посмотрите на мой код:

private void verifyIfHasToCloseAnyApp() { 
    ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningTaskInfo> tasks = activityManager.getRunningTasks(1);//Integer.MAX_VALUE 
    List<AppBlocked> appBlockeds = listAllAppBlocked(); 

     for (RunningTaskInfo runningTaskInfo : tasks) { 

      String packageName = runningTaskInfo.topActivity.getPackageName(); 

      for(AppBlocked appBlocked : appBlockeds) { 
       String packageBlocked = appBlocked.getAppPackage(); 
       if(packageName.equals(packageBlocked)) { 
        if(appBlocked.isTimeToClose()) 
      /*Here I have to close or put this app in background */ 
       } 
      } 

     } 
} 

Возможно ли это?

Спасибо.

+0

Вы когда-нибудь задумывались, как это сделать? Если да, можете ли вы мне написать свой подход? Моя электронная почта находится в моем профиле, спасибо! – portfoliobuilder

ответ

0

Вы не можете сделать это с помощью стандартного api. Редактировать Или вы можете: https://stackoverflow.com/a/7197265/1434792

Вы можете выполнить PS команду на

Process process = Runtime.getRuntime().exec("ps"); 

и чем найти PID процесса, который вы хотите, чтобы убить в выходе этой команды, а затем запустить убить команда с этим pid.

Process process = Runtime.getRuntime().exec("kill " + pid); 

Уместно, чтобы у вас был доступ к корню для этого, но я не уверен в этом. Если вам это нужно, не убивайте этот процесс на

 Process process = Runtime.getRuntime().exec("su"); 

     DataOutputStream os = new DataOutputStream(process.getOutputStream()); 
     InputStream is = process.getInputStream(); 
     os.writeBytes("kill " + pid+ "\n"); 
     int readed = 0; 
     byte[] buff = new byte[4096]; 
        os.writeBytes("exit\n"); 
     os.flush(); 
       process.destroy(); 

 Смежные вопросы

  • Нет связанных вопросов^_^