0

背景

  • 我们构建和控制运行应用程序的硬件设备。
  • (编辑)我们也将尽快构建 Android 操作系统的自定义版本。
  • 我们正在构建一个我们希望“永远在线”的应用程序。
  • 我们希望应用程序能够独立于市场进行自我更新。因此,我们托管了一项服务,客户端应用程序将定期轮询更新,下载 apk,然后安装它。其中的谎言...

问题

我希望 UpdateService 安装下载的应用程序更新而不给用户通常的权限和更新提示 - 毕竟,我们控制硬件和软件。为此,我认为我需要授予我的应用超级用户权限(但是,如果有其他方式,那么我的问题将变得完全不同)。但我不知道该怎么做。

已经阅读了一个可以安装的超级用户应用程序 - 但这似乎是想要根植自己手机的用户的用户解决方案。或者为想要分发需要超级用户的应用程序的开发人员提供解决方案,但他们不控制用户安装它的设备。

android 操作系统中是否有一个文件列出了应该有 su 的应用程序或用户?如果是这样,那没问题;我们控制一切。

4

2 回答 2

1

首先我下载然后运行卸载和安装(系统已root)

private void uninstall() {

        try {
            Process p = Runtime.getRuntime().exec("su");
            InputStream es = p.getErrorStream();
            DataOutputStream os = new DataOutputStream(p.getOutputStream());

            os.writeBytes("pm uninstall  com.example.app\n");

            os.writeBytes("exit\n");
            os.flush();
            int read;
            byte[] buffer = new byte[4096];
            String output = new String();
            while ((read = es.read(buffer)) > 0) {
                output += new String(buffer, 0, read);
            }
            p.waitFor();
        } catch (Exception e) {
        }
    }

    private void install() {
        try {
            // Do the magic
            Process p = Runtime.getRuntime().exec("su");
            InputStream es = p.getErrorStream();
            DataOutputStream os = new DataOutputStream(p.getOutputStream());

            os.writeBytes("pm install /mnt/sdcard/exampple/app.apk\n");

            os.writeBytes("exit\n");
            os.flush();
            int read;
            byte[] buffer = new byte[4096];
            String output = new String();
            while ((read = es.read(buffer)) > 0) {
                output += new String(buffer, 0, read);
            }
            p.waitFor();

        } catch (IOException e) {
            Log.d("catch silant", "1");
        } catch (InterruptedException e) {
            Log.d("catch silant", "2");
        }
    }
于 2014-06-19T16:20:20.440 回答
0

看看这个:https ://code.google.com/p/auto-update-apk-client/downloads/detail?name=auto-update-apk-client_2012-10-04.tgz&can=2&q=

我认为它可以帮助您,如果您成功,我现在也在尝试这样做,请写信,因为我很难做到。

于 2013-04-10T07:44:54.850 回答