代码之家  ›  专栏  ›  技术社区  ›  Smart

ROOT-在后台卸载应用程序,无提示对话框

  •  0
  • Smart  · 技术社区  · 7 年前

    大家好,我有一个基于Android 7.1.1的根手机,我想卸载应用程序而不提示对话框(返回或卸载确认)。我的应用程序具有root权限,也是一个系统应用程序。我曾尝试通过“pm uninstall”命令使用shell命令,但它不起作用:

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

    我得到了“Magisk/E:未知id:pm”。我尝试了许多其他组合,带有shell前缀等,但什么也没有。Root工作得很好,我在清单文件中放了perm“DELETE\u PACKAGES”。如果我通过PC执行,同样的命令也会起作用。

    我如何在没有对话框的情况下卸载应用程序?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Iakovos Gu    7 年前

    而不是 Runtime.getRuntime().exec("su pm uninstall " + packageName); 试着跑步 Runtime.getRuntime().exec("su -c 'pm uninstall " + packageName + "'");

    您忘记在代码中添加 -c 所以 pm uninstall [...] 被视为 su 命令

        2
  •  0
  •   Colibri    7 年前

    您可以使用DataOutputStream进行尝试:

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