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