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" />