2016-11-25 165 views
0

我想關閉Android服務中的當前前臺應用程序。但是,它不起作用。你能讓我解決它嗎?謝謝。如何關閉Android服務中的前臺應用程序?

 ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE); 
     List<ApplicationInfo> packages; 
     PackageManager pm; 
     pm = getPackageManager(); 
     //get a list of installed apps. 
     packages = pm.getInstalledApplications(0); 

     ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); 
     String myPackage = getApplicationContext().getPackageName(); 
     for (ApplicationInfo packageInfo : packages) { 
      if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue; 
      if(packageInfo.packageName.equals(myPackage)) { 
       Log.d(TAG,"*************"+packageInfo.packageName); 
       mActivityManager.killBackgroundProcesses(packageInfo.packageName); 
      } 
     } 

也去功能killBackgroundProcesses但不會關閉我當前的前景應用程序。我在Android L系統運行許可

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

檢查這個http://stackoverflow.com/questions/6733311/android-killing-all-foreground-running-app – Tasneem

回答

0

你試圖殺死你的代碼的後臺進程

mActivityManager.killBackgroundProcesses(packageInfo.packageName); 

你應該使用:

android.os.Process.killProcess(android.os.Process.myPid()); 

變化有一個和檢查上面。

殺死其他應用程序是一種嚴重的安全問題,因此受到嚴格管制。你只能殺死一個與正在進行查殺的程序包相同的程序包ID。如果您試圖殺死您自己的進程,它將適用於您無法執行的其他應用程序(除非您擁有根設備並且您的應用程序具有root權限)。

您可以參考此link瞭解更多信息。

+0

但我的輸入是一個包名。我想殺死包名稱,例如'com.google.android.googlequicksearchbox' – Jame

+1

如果你想殺死自己的應用程序,那麼它會工作,因爲myPid是你的應用程序包ID或如果你想殺死其他應用程序,然後讓我檢查與其他解決方案。 –

+0

對。我想殺死其他應用程序,而不是我的應用程序 – Jame

相關問題