root-无需提示对话框的后台卸载应用程序



嗨,我有一部基于Android 7.1.1的扎根手机,我想要卸载应用程序,而无需提示对话框(返回或卸载确认)。我的应用具有根特权,它也是系统应用程序。我尝试通过" PM卸载"命令使用Shell命令,但它行不通:

Runtime.getRuntime().exec("su pm uninstall " + packageName);

我得到了" Magisk/E:未知ID:PM"。我尝试了许多其他组合,带有外壳前缀等,但没有。root效果很好,在清单文件中,我将" delete_packages"放置。如果我通过PC执行该命令。

我该如何卸载无对话框的应用程序?

而不是Runtime.getRuntime().exec("su pm uninstall " + packageName);尝试运行Runtime.getRuntime().exec("su -c 'pm uninstall " + packageName + "'");

在您的代码中,您忘记了添加-c,因此pm uninstall [...]被视为su命令的参数。

您可以使用DataOutputStream尝试尝试:

        try
        {
            Process p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            os.writeBytes("pm uninstall " + packageName + "n");
            os.writeBytes("exitn");
            os.flush();
            p.waitFor();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }

最新更新