Android应用更新是否自动且无声?

时间:2013-09-03 03:18:15

标签: android root

我开发了一个应用程序,并希望自己更新,并希望以下的设备,设备已根植于:

1次自动检查可以更新每次启动(我可以做)
 2下载apk文件到本地(我可以)
 3使用自定义对话框更新,或者以静默方式更新(我不知道)

编辑: 我的应用程序在带遥控器的电视上运行,默认对话框可以控制但是完美,所以如果必须有对话框,我想使用我的对话框。如果不需要对话框,它最好。

3 个答案:

答案 0 :(得分:2)

首先声明这些变量,然后在任何地方调用函数。然后在超级用户应用程序上授予超级用户权限,选中始终授予的选项,以进行非用户交互。

  @Override
  public void onCreate() {
    super.onCreate();
            //some code...
             final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";

             final String commands = libs + "pm install -r " + "your apk directory"+ "app.apk";

             instalarApk(commands); 
 }

   private void instalarApk( String commands ) {
    try {

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

        os.writeBytes(commands + "\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.v(Debug.TAG, e.toString());
    } catch (InterruptedException e) {
        Log.v(Debug.TAG, e.toString());
    }
}

答案 1 :(得分:0)

常规方式(没有root和默认安装程序对话框)被描述为in another question,并且应该在大多数情况下使用imho,因为我不喜欢为更新功能请求root权限。

提供自定义对话框并静默安装apk没有区别,因为两者在技术上都是静默安装(例如,不是由安装活动创建)。使用root权限,您可以使用root shell并替换apk(as in the open-source keybord manager app)或从shell调用package manager。我建议你采用第二种方式,我将keybord管理器应用程序源链接主要用于root shell创建。

答案 2 :(得分:-2)

Android框架无法以静默方式更新,在自定义设备上必须为您的apk文件调用系统安装服务,它将显示用户的安装对话框,但如果设备已植根,我认为您可以制作那是默默无闻的。