Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从不同的应用程序中删除后台服务_Android_Android Service - Fatal编程技术网

Android 从不同的应用程序中删除后台服务

Android 从不同的应用程序中删除后台服务,android,android-service,Android,Android Service,我有两个独立的应用程序,第一个应用程序有一个持续运行的后台服务(粘性),在第二个应用程序中,我想终止该服务,因此它会重新启动。 我尝试使用killbackgroundprocesss(),但没有成功(我向清单中添加了权限)。 我甚至可以从其他应用程序中终止该服务,如果可以,如何终止?如果您有Root用户和超级用户,请尝试使用以下代码: ActivityManager activityManager = ((ActivityManager)getSystemService( Context.ACT

我有两个独立的应用程序,第一个应用程序有一个持续运行的后台服务(粘性),在第二个应用程序中,我想终止该服务,因此它会重新启动。 我尝试使用
killbackgroundprocesss()
,但没有成功(我向清单中添加了权限)。
我甚至可以从其他应用程序中终止该服务,如果可以,如何终止?

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

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)
您也可以通过以下方式尝试停止应用程序:

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

第二种方法是否需要根访问权限?不,这不需要根访问权限,但在上一个android版本中可能无法使用