【笔记】Disable APN 禁用数据连接的逻辑(Android & KaiOS)

这篇具有很好参考价值的文章主要介绍了【笔记】Disable APN 禁用数据连接的逻辑(Android & KaiOS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

通过OTA/OMADM 运营商服务器可以下发消息实现disable APN,从而影响Data PDN建立。APN被disable了会导致无法正常上网。

在Android 和 KaiOS 系统实现上有区别,不过都是通过carrier_enabled 这类字段实现判断控制。

  • Android:上层 Telephony 根据APN carrier_enabled 值判断是否下发PDN
  • KaiOS:上层 gecko DataCall 不做判断,随DataProfile 传给Modem(QCOM),底层决定是否建立PDN。

Android

Telephony 上层DataProfileManager 会根据网络请求选择APN,如果APN  被disable了,ApnSetting 在canHandleType 校验过程中会直接return false。

canBeSatisfiedBy => canHandleType

代码逻辑说明:

  • frameworks/base/telephony/java/android/telephony/data/ApnSetting.java(Android U)
    • Android 9 参考:http://androidxref.com/9.0.0_r3/xref/frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java#482
    • 早期DcTracker 和 DataConnection会使用,在DataConnection的PDN初始化(接口 initConnection)中校验;在 Android U上已经替换
  • frameworks/opt/telephony/src/java/com/android/internal/telephony/data/TelephonyNetworkRequest.java
//Android U 功能逻辑

//【TelephonyNetworkRequest.java】 选择满足PDN请求的类型
      /**       
        * Check if this network request can be satisfied by a data profile.
       *
       * @param dataProfile The data profile to check.
       * @return {@code true} if this network request can be satisfied by the data profile.
       */
     public boolean canBeSatisfiedBy(@NonNull DataProfile dataProfile) {
            //返回满足请求的APN列表
            return apnTypes.stream().allMatch(dataProfile.getApnSetting()::canHandleType);

    }

//【ApnSetting.java】 校验
      /** @hide */
      public boolean canHandleType(@ApnType int type) {
          if (!mCarrierEnabled) {
              return false;
          }
          // DEFAULT can handle HIPRI.
          return hasApnType(type);
      }

日志举例:根据 ApnSetting结构打印字段顺序找到CarrierEnabled 的值。

CarrierEnabled is false, so can not find the profile to setup data PDN.

[DataProfile=[ApnSetting] INTERNET, 3086, 310590, INTERNET, , null, , null, null, 0, supl | hipri | default, IPV4V6, IP, false, 0, true, 0, 0, 0, 0, 0, gid, A1, false, UNKNOWN, UNKNOWN, 0, -1, -1, false, 961, TrafficDescriptor={mDnn=INTERNET, null}, preferred=false], 

KaiOS

gecko 不对 APN 的 enable 情况做校验拦截,会随着 RIL_REQUEST_SETUP_DATA_CALL 的请求,将其转换成DataProfile的enabled传给qcom。具体QCOM校验需要看其逻辑。

若上层想通过carrier_enabled参数决定是否使用该APN请求网络,可以尝试在以下接口函数中过滤APN,然后再执行DataCall相关流程。文章来源地址https://www.toymoban.com/news/detail-817203.html

  • gecko/dom/system/gonk/radio/DataCallManager.jsm
//把disable的APN在aNewApnSettings数据中剔除,再执行后续DataCall流程
updateApnSettings(aNewApnSettings) { 
    const kApnSettingKey = "ril.data.apnSettings.sim"
}

到了这里,关于【笔记】Disable APN 禁用数据连接的逻辑(Android & KaiOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android】底层逻辑深入了解(学习笔记)(未完)

    step by step. 目录 init启动 Zygote进程:  SystemServer处理过程 Binder: Launcher启动过程 Android系统启动流程 四大组件 Activity Service  BroadcastReceiver广播 ContentProvider内容提供者(进程内和进程间的数据共享)  Context上下文  AMS(ActivityManagerService) (在图书馆看了《Android进阶解密》,

    2024年02月15日
    浏览(42)
  • android 8.1 disable unsupported sensor

    如果device不支持某种sensor,可以在android/frameworks/base/core/java/android/hardware/SystemSensorManager.java里将其disabled掉。以disable proximity sensor为例。 就是将p_sensor 从mFullSensorsList中移出。这一步基本上已经work了(SensorManager#getSensorList(8)得不到p_sensor的讯息),但是如果你的code还需要通过CTS测

    2024年02月06日
    浏览(38)
  • 阶段七第二章连接数据库,逻辑控制器,定时器,分布式

    准备工作 : 1.启动数据库 2.加载mysql的JDBC驱动 · 方法1:在测试计划下方的位置,点击浏览添加JDBC的jar包 · 方法2:将JDBC的jar拷贝到lib目录,并重启jmeter 3.JDBC连接池配置参数: 编写JDBC脚本步骤 :(搜索指定商品,在返回结果中检查是否包含指定商品的ID的URL) 1、添加JDBC

    2024年01月22日
    浏览(55)
  • 电脑本地连接禁用连接出错怎么办?

    禁用本地连接或无线连接时弹出窗口提示“此时无法禁用此连接”,对此我们该如何解决呢?小编在禁用本地连接过程中,经常遇到此类情况。后面经过反复思考和探索,终于找到了解决方法,现与大家分享一下。 大势至禁用USB接口软件网络版 v8.1 中文安装版 类型: 系统其

    2024年02月08日
    浏览(59)
  • openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构

    openGauss的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如 图1 。 图 1 数据库逻辑结构图 说明: Tablespace,即表空间,是一个目录,可以存在多个,里面存储的是它所包含的数据

    2024年02月09日
    浏览(53)
  • 【解决】android设备有root权限,执行“adb disable-verity”命令报错“verity cannot be disabled/enabled - USER build”

    这个错误提示意味着你的设备是使用USER版本的固件构建的,这个版本不允许禁用verity功能。但是,你可以尝试以下步骤来解决问题: 确认你的设备是否已经root,可以通过执行“adb root”命令来检查。 确认你的设备是否已经启用了开发者选项,可以在设备设置中找到“开发者

    2024年02月03日
    浏览(96)
  • 如何使用组策略禁用/启用远程连接管理远程协助

    首先来完全了解下远程协助吧!远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术。电脑中的远程控制技术,始于DOS时代。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软

    2024年02月06日
    浏览(57)
  • Android11屏蔽禁用下拉状态栏

    做项目软件时,会遇到客户提出屏蔽禁用下拉状态栏,其实禁用下拉状态栏主要包含两个地方 第一个地方就是解锁后进入到桌面时,在顶部和中部下拉时会将状态栏拉出来显示 第二个地方就是锁屏界面在顶部和中部下拉时会将状态栏拉出来显示 具体屏蔽禁用这两处的下拉状

    2024年02月11日
    浏览(38)
  • 软件设计师学习笔记12-数据库的基本概念+数据库的设计过程+概念设计+逻辑设计

    目录 1.数据库的基本概念 1.1数据库的体系结构 1.1.1常见数据库 1.1.2分布式数据库的特点 1.1.3分布式数据库的透明性 1.1.4例题 1.2三级模式结构 1.2.1三级模式概念图 1.2.2例题 1.3数据仓库 1.3.1数据仓库的特点 1.3.2数据仓库的过程 1.3.3例题 2.数据库的设计过程 2.1设计过程概念图 2

    2024年02月07日
    浏览(69)
  • Android 13.0 开启禁用系统接收短信功能

     在13.0的系统rom定制化中,在一些wifi产品的机器中,对于系统4g部分的功能需要裁剪 比如拨打电话 接听电话 短信功能等这部分 需要禁用系统对应的功能,接下来就来初步分析下系统中接收短信部分功能,然后实现禁用接收短信功能 对于Mms应用程序来讲主要就是在信息数据

    2024年02月22日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包