2012-06-28 3 views
0

Я создал службу, которая создает задачу timmer, которая активна каждые 5 секунд. Затем просто проверьте запущенные процессы, и у меня есть список пакетов приложений, которые я не хочу запускать. Поэтому, когда я сопоставляю их и обнаружил какое-либо незавершенное приложение, запускающее i, запустите Activity под названием «KillApplication» и передайте этот пакет для его уничтожения. Но он не убивает необходимый пакет. Пожалуйста, помогите мне. Убить приложение в Android

public class killApplication extends Activity { 

    private DBAdapter db; 
    private Context _context; 
    String nameOfProcess = "com.android.email"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     _context = this; 
     if (getIntent().hasExtra("application")) { 
      nameOfProcess = getIntent().getStringExtra("application"); 
     } 
     Log.d("Process Passed", nameOfProcess); 
     ActivityManager manager = (ActivityManager) _context.getSystemService(Context.ACTIVITY_SERVICE); 
     List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses(); 
     for (ActivityManager.RunningAppProcessInfo process : listOfProcesses) { 
      Log.e("Process Running", process.processName); 
      if (process.processName.contains(nameOfProcess)) { // Ends the app 
       android.os.Process.killProcess(process.pid); 
       Log.d("Killing Process", nameOfProcess + " : " + process.pid); 
       manager.restartPackage(process.processName); 
       break; 
      } 
     } 
     finish(); 
    } 

} 

Я также включил разрешение в файле манифеста:

+4

НЕ ДЕЛАЙТЕ ЭТО. Серьезно, люди, просто остановитесь. – kcoppock

+1

Да, это убьет ваш аккумулятор. – edthethird

+1

Создает новую «Активность», чтобы сделать это необходимо? –

ответ

0

почему вы перезапутить пакет, который вы убили? (Manager.restartPackage (process.processName);)

, и я бы сказал, добавьте это:

activityManager.killBackgroundProcesses(String.valueOf(process.processName)); 
activityManager.killBackgroundProcesses(String.valueOf(process.pid)); 

на вершине android.os.process.killprocess линии. :)

также не забудьте добавить это в манифесте:

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 

PS: это слишком часто, и это приведет к разрядке аккумулятора. мои 2 цента

+0

Поскольку это было использовано для уничтожения процессов, но сейчас это должно быть «manager.killBackgroundProcesses (process.processName)»; но это не работает. –

+0

@Fahad Поскольку для этого требуется сертификат, подписанный системой. Который вы не делаете и не можете иметь, не строя и не развертывая свой собственный ПЗУ. – kcoppock

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