禁止安装第三方应用(可对某个应用特殊处理),动态通过暗码改变是否能够安装第三方应用:

o版本

主要是在frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

handleStartCopy方法中有判断

if (onInt && onSd) {

最外的else内加入

if ("1".equals(SystemProperties.get("persist.sys.packageinstall.status", "0"))){ret = PackageManager.INSTALL_SUCCEEDED;} else {if (pkgLite.packageName != null && (pkgLite.packageName.equals("com.corget"))) {ret = PackageManager.INSTALL_SUCCEEDED;android.util.Log.e("tydtech", pkgLite.packageName+" can install");} else{ret = PackageManager.INSTALL_FAILED_INVALID_APK;android.util.Log.e("tydtech", "xxx not allow install");}}

最后把mRet = ret; 

SystemProperties.get("persist.sys.packageinstall.status", "0")如果开始没有值,那就默认是0,就走else,当然这个get也可以是一个参数,不返回默认值。此类适用于开始已经定义好了初始值。一般在devicemediatek/system/common/system.prop比如35,38,54。下面那个判断就是具体的包名依然可以安装

如果是ret = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION,那就是提示空间不足,(手动安装或adb安装会给报错提示),所以推荐用PackageManager.INSTALL_FAILED_INVALID_APK;

import android.os.SystemProperties;

输入暗码再开启或关闭

override/vendor/freeme/frameworks/base/core-export/java/com/freeme/telephony/FreemeSpecialCharSequenceMgr.java

handleSecretCode方法中

if (input.equals("*#731130#")) {Intent intent = new Intent();intent.setAction("COM_TYD_INSTALL");context.sendBroadcast(intent);Toast.makeText(context,context.getString(R.string.close_app_installation_permission),Toast.LENGTH_SHORT).show();return true;}if (input.equals("*#731129#")) {Intent intent = new Intent();intent.setAction("COM_TYD_UNINSTALL");context.sendBroadcast(intent);Toast.makeText(context,context.getString(R.string.open_app_installation_permission),Toast.LENGTH_SHORT).show();return true;}

就是发两个广播,至于这个toast提示,是为了有点反应,证明确实执行到了,别忘导包

import android.widget.Toast;import com.android.internal.R;

还有这toast的字符串要写好

vendor/freeme/frameworks/base/core-export/res/res/values/strings.xml

<string name="open_app_installation_permission">开启APP安装权限</string><string name="close_app_installation_permission">关闭APP安装权限</string>

override/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

接受两个广播,并赋值

filter.addAction("COM_TYD_INSTALL");filter.addAction("COM_TYD_UNINSTALL");
BroadcastReceiver mDockReceiver = new BroadcastReceiver() {

 加入

if (intent.getAction().equals("COM_TYD_INSTALL")) {SystemProperties.set("persist.sys.packageinstall.status", "0");}if (intent.getAction().equals("COM_TYD_UNINSTALL")) {SystemProperties.set("persist.sys.packageinstall.status", "1");}

SystemProperties.set("persist.sys.packageinstall.status,设置这种属性值,名字有讲究的!!!!,一定要是persist.sys.打头。这个已经系统定义好了,如果想自己定义,就找到property_contexts文件加入,这个是SeLinux需要的。

比如在device/droi/common/sepolicy/non_plat/ property_contexts

还有些在./mediatek/proprietary/modem/pd3d_l8/sepolicy/q0/property_contexts

加入

persist.freeme.            u:object_r:system_prop:s0

就相当于一个系统各进程共享内存

源码的定义在system目录下,每个api不一样。比如P版本

~/2TSSD/P2/system/sepolicy/prebuilts/api/28.0/private/ property_contexts

persist.sys.            u:object_r:system_prop:s0

所以只要能编译到底层都放到或者覆盖那个位置就可以

拨号中输入*#数字#进入指定界面:

vendor/freeme/frameworks/base/core-export/java/com/freeme/telephony/FreemeSpecialCharSequenceMgr.java

private static final SecretCode kSecretCode;static {kSecretCode = SecretCode.newInstance().build("*#6801#", "android.settings.DEVICE_INFO_SETTINGS", "*#6802#")  /.build("*#6810#", "com.freeme.intent.action.SOFTWARE_INFO")

这个里面两个参数也行,第三个参数也可以是备用的号

这个SecretCode.newInstance()只是设置,号码数字打开哪个应用特定的action

然后这个kSecretCode交给

handleSecretCode方法里面去处理。

当然也可以仿照上面的,两者可互通

if (input.equals("*#731129#")) {Intent intent = new Intent();intent.setAction("COM_TYD_UNINSTALL");context.sendBroadcast(intent);return true;}

禁止安装第三方应用(可对某个应用特殊处理),动态通过暗码改变是否能够安装第三方应用。拨号中输入*#数字#进入指定界面。相关推荐

  1. WPF 禁止在文本框中输入数字

    private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e){e.Handled = System ...

  2. python离线安装第三方库whl_详细说明如何在pycharm不联网的情况下,离线安装第三方库及依赖包(如sklearn)...

    1.安装目标库 1.首先,选择你要导入的库文件,如seaborn库 下载网站: https://pypi.org/ 或https://www.lfd.uci.edu/~gohlke/pythonlib ...

  3. macos big sur安装php扩展_用PHP构建基于swoole扩展的socket服务(附PHP扩展安装步骤)...

    最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...

  4. linux下安装树梅派系统,优麒麟树莓派系统(优麒麟 for Raspberry Pi)的安装方法...

    要安装优麒麟树莓派系统(优麒麟 for Raspberry Pi),得先下载 ubuntukylin-focal-beta-raspi+arm64.img.xz,然后通过以下步骤引导您烧录优麒麟到您的 ...

  5. android studio安装部署及sdk下载_「从零开始Python爬虫」1.7.3 APPium的安装

    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android.iOS等设备完成自动化测试,比如模拟点击.滑动.输入等操作,其官方网站为:http://appiu ...

  6. win10安装hypermesh无法启动_最最详细的win10原版系统安装教程(包含制作启动安装)...

    前言: 之前我有给大家讲过如何安装原版系统,而且视频教程也有,图文教程也有,但不全面.最近一直有人问我一些问题,不是不会制作,就是不会启动,所以考虑再三,还是决定花点时间再次给大家全面的详细的讲解一下 ...

  7. PodfileKit将github上常见的iOS(Swift)第三方框架进行了汇总,并且将框架进行了分类,为用户管理第三方框架提供了方便。

    PodfileKit ======================== Easy Podfile ! PodfileKit将github上常见的iOS(Swift)第三方框架进行了汇总,并且将框架进行 ...

  8. alfresco6.1(源码版) + onlyoffice安装部署

    alfresco6.1(源码版) + onlyoffice安装部署 简要说明 docker部署安装alfresco6.1 前提环境 Java maven docker 从原型生成项目 集成onlyof ...

  9. python使用第三方库MyQR实现生成动态二维码

    使用python第三方库:MyQR GitHub地址: https://github.com/sylnsfar/qrcode 步骤: 1.安装myqr pip install MyQR 1.2 准备需 ...

最新文章

  1. R语言使用str_remove函数和str_remove_all函数删除模式匹配的字符串:str_remove函数删除第一个模式匹配的字符串、str_remove_all函数删除所有模式匹配的字符串
  2. 【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
  3. json-lib解决死循环
  4. java invalidate_Java Component.invalidate方法代码示例
  5. API的非向后兼容性无论如何通常代表着一种比较差的设计
  6. geoserver矢量瓦片发服务前端展示偏移问题解决
  7. HDU1233 还是畅通工程
  8. js中单引号和双引号的区别_python中print函数 以及单引号、双引号、三引号
  9. HTML 5 新标签
  10. 扫一下这个神奇的二维码,Wifi不用输密码
  11. 公有云时代企业需要什么样的云平台
  12. IT硬件名人堂:40年经典产品和背后的故事(组图)
  13. 服务器所有文件后缀名变了,怎么样批量修改文件扩展名(后缀)
  14. linux安装浏览器 linux本地浏览器进行访问
  15. 有趣的KaTeX(附源码)
  16. K8S 快速入门(十六)实战篇:StorageClass(存储类)
  17. datatable render formatter
  18. 【RL-TCPnet网络教程】第4章 RL-TCPnet网络协议栈简介
  19. mysql slow设置_mysql slow log设置
  20. 计算机组装基地,系统基地装机大师工具装机版V6.5

热门文章

  1. Ubuntu 下yuma源码安装
  2. DDN | 时刻准备,马上出发!
  3. 百度清风算法打击下载违规网站说明
  4. 把一个把正整数分解为素数乘积
  5. 某计算机系统中有k台打印机,第三章复习题(2)
  6. Spring Boot集成Mybatis-Plus多租户架构实战
  7. 红旗linux hba卡wwn,Redhat Linux下安装HBA卡并查看WWN号
  8. 数仓用户画像-标签体系详解
  9. 树莓派4b移植4G USB驱动Quectel EC200T以及ppp拨号
  10. 百度炮轰Google搜索不创新 拟全力进攻云搜索