Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从下载的apk实现应用程序自我更新?_Android_Ota - Fatal编程技术网

Android 如何从下载的apk实现应用程序自我更新?

Android 如何从下载的apk实现应用程序自我更新?,android,ota,Android,Ota,我正在使用应用程序的OTA更新。它的工作原理是这样的:我点击“检查更新”,它会检查它,下载(如果存在)并在设备上保存apk。然后我可以安装它,但当然我有一个确认对话框。我需要悄悄地做,然后重新启动应用程序 我想让它在下载完成后自动安装。所以我只需点击,如果有更新,应用程序就会在新版本中重新启动。我不知道怎么做设备是根设备出于安全原因,您不能使用此设备。没有用户应用程序可以在非根手机上静默安装 您唯一能做的就是告诉用户您刚刚下载了更新,并询问用户是否要安装它。如果是这样,则激发安装意图并让用户继续

我正在使用应用程序的OTA更新。它的工作原理是这样的:我点击“检查更新”,它会检查它,下载(如果存在)并在设备上保存apk。然后我可以安装它,但当然我有一个确认对话框。我需要悄悄地做,然后重新启动应用程序


我想让它在下载完成后自动安装。所以我只需点击,如果有更新,应用程序就会在新版本中重新启动。我不知道怎么做设备是根设备

出于安全原因,您不能使用此设备。没有用户应用程序可以在非根手机上静默安装


您唯一能做的就是告诉用户您刚刚下载了更新,并询问用户是否要安装它。如果是这样,则激发安装意图并让用户继续安装

以下代码仅适用于roodted设备

private int installApk(File file) {
    if (!file.exists()) throw new IllegalArgumentException();

    Process process = null;

    try {
        process = Runtime.getRuntime().exec(new String[]{"su", "-c", "pm install -r " + file
                .getAbsolutePath()});
        int exitCode = process.waitFor();
        if (exitCode != 0) throw new RuntimeException();
    } catch (IOException | InterruptedException exception) {
        Log.w(getClass().getSimpleName(), exception);
    }

    return (process == null) ? Integer.MIN_VALUE : process.exitValue();
}