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) {
        }
    }

最后别忘记加权限

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容