应用黑名单以及静默安装的实现

需求描述:
1.主要给上层应用提供一个添加应用黑名单接口,被添加到黑名单的应用用户无法对其进行安装。同时也可以对这个黑名单进行增加和删除
2.给上层应用提供一个静默安装卸载的接口,应用调用这个接口可以实现应用的静默安装和卸载。

具体实现:
一.应用黑名单添加:
1.在PackageManagerService中创建一个数据库用来存储这些应用的包名,同时实现对于此数据库的增删改查。
2.在handleStartCopy()函数中去读取数据库遍历和安装的包名进行对比,如果存在于黑名单就不进行安装同时返回不安装的信息。
代码:

List<String> packageName = new ArrayList<String>();
			packageName = getAppRestriction();
			if(packageName != null) {
				for(String pakgs : packageName) {
					if(pkgLite.packageName.equals(pakgs)) {
						ret = PackageManager.INSTALL_FAILED_INVALID_URI;
						break;
					} else {
						ret = PackageManager.INSTALL_SUCCEEDED;
					}
							
				}
			} else {
                ret = PackageManager.INSTALL_SUCCEEDED;
			}

二.静默安装的实现:
1.通过解析pm命令的方式进行静默安装,因为考虑到重复安装的情况,所以使用pm install -r命令。
2.但是在手机没有root的情况下,pm命令是安装不成功的,原因在于PackageManagerService的installPackageAsUser()函数有一个权限的检查,
所以在这里添加包名判断来确定进不进行权限检查。
代码:

		final int callingUid = Binder.getCallingUid();
		if(getNameForUid(callingUid) != null) {
			if(!getNameForUid(callingUid).equals("com.example.requiredemo")) {
        		mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
			}
		} else
			mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值