Java 如何以编程方式强制停止android中的应用程序

Java 如何以编程方式强制停止android中的应用程序,java,android,Java,Android,如果不允许用户使用该应用程序,我将尝试以编程方式强制停止其他应用程序。强制停止与进入设置>应用程序>Firefox>相同,将有一个强制停止按钮,可以强制停止应用程序 private void forceStop(int currentPID, String currentProcessName){ try { Log.i(TAG, currentProcessName); if(currentPID != -1){ try {

如果不允许用户使用该应用程序,我将尝试以编程方式强制停止其他应用程序。强制停止与进入设置>应用程序>Firefox>相同,将有一个强制停止按钮,可以强制停止应用程序

private void forceStop(int currentPID, String currentProcessName){
    try {
        Log.i(TAG, currentProcessName);
        if(currentPID != -1){
            try {
                Process suProcess = Runtime.getRuntime().exec("su");
                DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());

                os.writeBytes("adb shell" + "\n");

                os.flush();

                os.writeBytes("am force-stop " + currentProcessName + "\n");

                os.flush();
                Log.i("Executed","Kill " + currentPID);
            } catch (IOException e) {
                // Handle error
            }
        } else {
            Log.i("Not Found","App Not Found");
        }
    } catch (Exception e) {
        e.printStackTrace();  
    }
}
但是,如果我尝试在Android Studio的终端中输入此命令,这将强制停止应用程序:

    adb shell force-stop <packageName>
adb外壳力止动器
那么,如何通过编程方式强制停止应用程序


p.S我的设备不是root

为什么不直接完成()您的活动?从实用的角度来看,它的等价物是——你正在关闭UI。@Gabeschen我正在做的应用程序是这样的,用户只能访问白名单应用程序。但是,如果用户打开一个应用程序,例如:Firefox,该应用程序将检测到它不是白名单应用程序,并将强制停止Firefox,以防止它在后台运行。如果没有根,则不能这样做。你知道这将是一个多么严重的安全问题吗?如果你真的需要这个,你应该是一个设备政策的权威,只是防止任何其他应用程序被安装在allI我有一个问题。为什么当我在android studio终端中输入adb shell force stop时它会工作,而如果我输入代码,它就不工作了?为什么不直接完成()你的活动?从实用的角度来看,它的等价物是——你正在关闭UI。@Gabeschen我正在做的应用程序是这样的,用户只能访问白名单应用程序。但是,如果用户打开一个应用程序,例如:Firefox,该应用程序将检测到它不是白名单应用程序,并将强制停止Firefox,以防止它在后台运行。如果没有根,则不能这样做。你知道这将是一个多么严重的安全问题吗?如果你真的需要这个,你应该是一个设备政策的权威,只是防止任何其他应用程序被安装在allI我有一个问题。为什么当我在android studio终端中输入adb shell force stop时它会工作,而如果我输入代码,它就不工作了?