2013-04-04 51 views
1

我有一個應用程序列出所有安裝的應用程序,並啓動他們的項目click.Now我更新它阻止一些應用程序,如設置,Android市場等...爲此,我使用的服務,只有退出時,我的應用程序停止。此服務會不斷檢查當前正在運行的應用程序。如果它是被阻止的應用程序,則會顯示一個像這樣的新活動。如何刪除在後臺運行的應用程序?

private void currentlyRunningApps() { 
    List<RunningTaskInfo> runningTasks = ((ActivityManager) getApplicationContext() .getSystemService("activity")).getRunningTasks(1); 
    if (runningTasks != null && !runningTasks.isEmpty()) { 
     for (int i = 0; i < runningTasks.size(); i++) { 
      RunningTaskInfo runningtaskinfo = (RunningTaskInfo) runningTasks .get(i); 
      String packageName = runningtaskinfo.topActivity.getPackageName(); 
      if(checkBlackListedTask(runningtaskinfo)) { 

       handler.post(new Runnable() { 
        @Override 
        public void run() { 
        // show action not allowed activity 
        } 
       }); 
       break; 

      } 
     } 
    } 
} 

這從我的應用程序禁用的應用程序留在background.I退出時試圖killBackgroundProcessesrestartPackage method.But他們將無法正常工作的工作fine.But。

Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);  
      forceStopPackage.setAccessible(true);  
      forceStopPackage.invoke(am,package name); 

此拋出空指針異常

我怎樣才能關閉顯示'action not allowed'活動之前,這些攔截的應用程序?

有什麼辦法解決這個問題嗎?

在此先感謝

回答

2

ActivityManager.killBackgroundProcess()讓你去殺死那些在後臺對用戶是不可見的進程。這是爲了防止你中斷其他應用程序的執行。

只有系統應用程序(位於/ system/app中的應用程序)可以強制其他應用程序。基本上我們需要「android.permission.FORCE_STOP_PACKAGES」這樣做的權限。但是它受到平臺簽名的保護。這就是爲什麼三星有一個TaskManager可以殺死應用程序,而我們的開發人員卻不能。看看this的更多信息

+0

我也試過這個。但它會拋出NullPointerException – 2013-04-04 09:11:20

+0

你是否檢查我提到的鏈接。 – Sree 2013-04-04 09:15:46

+0

是的,我添加了清單 – 2013-04-04 09:21:58