从不同的应用程序中杀死后台服务

时间:2015-03-07 19:44:39

标签: android android-service

我有两个独立的应用程序,第一个具有连续运行的后台服务(STICKY),而在第二个应用程序中我想要终止该服务,因此它会重新启动。 我尝试使用killBackgroundProcesses(),但它不起作用(我添加了清单的权限)。 我甚至可以从其他应用程序中删除该服务,如果是,那该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您有Root和Superuser,请尝试使用以下代码:

ActivityManager activityManager = ((ActivityManager)getSystemService( Context.ACTIVITY_SERVICE));
...
Runnable runnable = new Runnable() {
     @Override
     public void run() {
        Process processSUkill9 = Runtime.getRuntime().exec( "su");
        DataOutputStream dataOutputStreamSUkill9 = new DataOutputStream( processSUkill9.getOutputStream());
        DataInputStream dataInputStreamSUkill9 = new DataInputStream(  processSUkill9.getInputStream());
     }
};
new Thread( runnable).start();
...
// and kill app
dataOutputStreamSUkill9.writeBytes( "kill -9 " + processInfo.pid + "\n");
dataOutputStreamSUkill9.flush();
// where processInfo is item from RunningAppProcessInfo
// example
// for( RunningAppProcessInfo processInfo : activityManager.getRunningAppProcesses())
// if( processInfo.processName.compareTo( "package.for.close") == 0)

您也可以尝试停止app:

Method forceStopPackage = activityManager.getClass().getDeclaredMethod( "forceStopPackage", String.class);
forceStopPackage.setAccessible( true);
forceStopPackage.invoke( activityManager, "package.for.close");