Android PackageInstaller:安装应用的应用,从三流Android外包到秒杀阿里P7

可以看到对application/vnd.android.package-archive这个mime的处理,还有android.intent.action.INSTALL_PACKAGE这个action的处理。

在文件管理器中点击apk文件,或者发送以上intent-filter中对应的action,就会调用PackageInstaller。

1.只安装指定前缀包名的应用

我们可以在initiateInstall()这个函数中,通过包名对将要安装的应用进行管控,参考代码如下:

private void initiateInstall() {

String pkgName = mPkgInfo.packageName;

Log.v(“AZ”,"[initiateInstall]pkgName:" + pkgName);

if(pkgName.startsWith(“com.zms”)){

// Check if there is already a package on the device with this name

// but it has been renamed to something else.

String[] oldName = mPm.canonicalToCurrentPackageNames(new String[] { pkgName });

if (oldName != null && oldName.length > 0 && oldName[0] != null) {

pkgName = oldName[0];

mPkgInfo.packageName = pkgName;

mPkgInfo.applicationInfo.packageName = pkgNam

你可能感兴趣的:(程序员,面试,移动开发,android)