DefaultInstaller.java 1.46 KB
Newer Older
pye52 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
package com.bgycc.smartcanteen.installer;

import android.content.Context;
import android.os.Build;

import com.blankj.utilcode.util.LogUtils;

import java.io.File;

import static com.bgycc.smartcanteen.utils.SmartCanteenUtils.TAG;

@SuppressWarnings("all")
public abstract class DefaultInstaller {
    protected static final String ARG_PATH = "arg_path";
    protected static final String ARG_COMPONENT = "arg_package";
    // assets文件夹中守护进程apk名称
    protected static final String DAEMON_APK_NAME = "Daemon.apk";
    // 守护package name
    protected static final String DAEMON_PACKAGE_NAME = "com.bgycc.smartcanteen.daemon";
    // 守护服务类名称
    protected static final String DAEMON_SERVICE_NAME = "com.bgycc.smartcanteen.daemon.DaemonService";

    public final boolean install(Context context, File updateApk) {
        String model = Build.MODEL;
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
            // 6.0以下安装包需要修改权限才能安装
            try {
                Process p = Runtime.getRuntime().exec("chmod 755 " + updateApk);
                p.waitFor();
                LogUtils.d(TAG, "安装文件权限修改成功");
            } catch (Exception e) {
                LogUtils.e(TAG, "安装文件权限修改失败");
                return false;
            }
        }
        return installActual(context, updateApk);
    }

    public abstract boolean installActual(Context context, File updateApk);
}