2013-04-04 54 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