SystemApp静默安装

前言

最近用到静默安装,在这里记录一下。

常见安装

调用系统PackageInstaller安装,7.0以下版本


  Intent intent = new Intent();
  intent.setAction(Intent.ACTION_VIEW);
  intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(intent);

Root后执行shell命令安装

"pm install -r  /sdcard/new.apk"
"cp /sdcard/new.apk /data/app"

System app静默安装

使用PackageManager.installPackage(),需要系统权限

 public abstract void installPackage(
            Uri packageURI, IPackageInstallObserver observer, int flags,
            String installerPackageName);

packageURI是apk的路径uri,observer是安装完成后的回调,flags有以下标准,1是普通,2是覆盖,4是测试的apk;installerPackageName 是安装的包名

 public static final int INSTALL_FORWARD_LOCK = 0x00000001;
 public static final int INSTALL_REPLACE_EXISTING = 0x00000002;
 public static final int INSTALL_ALLOW_TEST = 0x00000004;

IPackageInstallObserver可以写个类继承

static class PackageInstallObserver extends IPackageInstallObserver.Stub {
        public void packageInstalled(String packageName, int returnCode) {
        }
    }

最后别忘记加权限

你可能感兴趣的:(SystemApp静默安装)