当前位置: 首页 > news >正文

Android 实现:当后台数据限制开启时,仅限制互联网APN。

需求描述和评估

后台数据限制仅作用于互联网APN,非上网 internet (default type)APN 需标记不计费。

When background data restriction is turned ON, only the internet APN should be restricted.
OEM's need to change android framework to add NET_CAPABILITY_NOT_METERED for all the non default APN's.

Android平台支持情况:默认不支持,需OEM修改APN网络能力配置

参考开发方案

修改ApnSetting中网络能力判断逻辑:

// frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java  
public boolean isMetered(Context context) {// 非Class3 APN添加NOT_METERED标志if (!apnTypeBitmask.contains(APN_TYPE_DEFAULT)) {  return (networkCapabilities & NET_CAPABILITY_NOT_METERED) == 0;  }  return super.isMetered(context);  
}  

更新DcTracker数据限制处理逻辑:(针对早期的 Android 版本,现在已经不用 DcTracker)

// frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java  
protected boolean isDataAllowed(NetworkRequest networkRequest) {if (mDataEnabledSettings.isBackgroundRestricted()) {// 仅限制DEFAULT类型APNreturn (networkRequest.networkCapabilities & NET_CAPABILITY_INTERNET) == 0;}return super.isDataAllowed(networkRequest);
}

    测试建议:

    • 测试环境:国内Lab模拟
    • 测试方法:
      ① 开启开发者选项中的"后台数据限制"
      ② 依次激活IMS、MMS、SUPL等非DEFAULT APN
      ③ 执行HTTP请求测试各APN连通性
    • 检查点:
      a) adb shell dumpsys netpolicy显示DEFAULT APN有BACKGROUND_RESTRICTED标记
      b) 非DEFAULT APN连接日志显示NET_CAPABILITY_NOT_METERED
      c) 后台限制时MMS/IMS仍可通过adb shell ping -I rmnet_data1 8.8.8.8验证
      d) 使用adb shell dumpsys connectivity bandwidth确认仅DEFAULT APN流量被抑制

    测试结果:暂无

    http://www.lryc.cn/news/591369.html

    相关文章:

  1. 小程序按住说话
  2. 紫金桥跨平台监控组态软件 | 功能强大,支持复杂工业场景,与西门子 PLC 无缝兼容
  3. 【Linux基础知识系列】第五十二篇 - 初识Linux的内置命令
  4. 三十四、【扩展工具篇】JSON 格式化与解析:集成 Monaco Editor 打造在线 JSON 工具
  5. 物联网主机在化工园区安全风险智能化管控平台中的应用
  6. day055-Dockerfile与常用指令
  7. PyCharm 高效入门指南(引言 + 核心模块详解)
  8. 【C# in .NET】16. 探秘类成员-索引器:通过索引访问对象
  9. 关于接口测试的HTTP基础【接口测试】
  10. 解读一个大学专业——信号与图像处理
  11. 一种融合人工智能与图像处理的发票OCR技术,将人力从繁琐的票据处理中解放
  12. 小红书获取关键词列表API接口详解
  13. 在 Windows 上使用 Docker 运行 Elastic Open Crawler
  14. Java爬虫与正则表达式——用正则来爬取数据
  15. 利用deepspeed在Trainer下面微调大模型Qwen2.5-3B
  16. 切比雪夫不等式的理解以及推导【超详细笔记】
  17. 【Linux手册】缓冲区:深入浅出,从核心概念到实现逻辑
  18. 2025年6月GESP(C++一级):假期阅读
  19. 多线程--sem_wait(sem)特殊用法
  20. 【原创】【图像算法】高精密电子仪器组装异常检测
  21. 24、鸿蒙Harmony Next开发:不依赖UI组件的全局自定义弹出框 (openCustomDialog)
  22. java之json转excel生成
  23. AppTrace:重新定义免填邀请码,解锁用户裂变新高度
  24. IMU噪声模型
  25. JxBrowser 7.43.5 版本发布啦!
  26. ubuntu 开启ssh踩坑之旅
  27. 加速度传感器方向校准方法
  28. 原生前端JavaScript/CSS与现代框架(Vue、React)的联系、区别与运行环境(精简版)
  29. 关于用git上传远程库的一些常见命令使用和常见问题:
  30. Python爬虫入门到实战(2)-selenium驱动浏览器