android - "Restrict Background Data"是如何在 Android 堆栈中强制执行的?

标签 android android-networking

有谁知道“限制后台数据”设置在 Android 堆栈中的什么位置以及如何执行? (即后台应用程序在后台运行时不允许使用手机数据网络 - WIFI 不受影响。)

非常感谢,

最佳答案

Android 使用 iptables 规则,就像在任何 linux 机器上一样,以限制某些用户的数据访问(每个用户在 android 上下载的应用程序都在其自己唯一的用户 ID 下运行)。

如果您希望移除对您的应用程序的限制,您可以从根 shell 中移除规则。

iptables -F penalty_box -j REJECT

或在较新的设备上,如下所示:

iptables -F bw_penalty_box -j REJECT

但是在重新启动时,Android 会自动重新执行 iptables 的规则。为防止这种情况,您需要删除 <uid-policy ...>来自“/data/system/netpolicy.xml”。可以通过在 <policy-list ...> 上将“restrictBackgroundData”属性设置为“false”来删除全局限制后台数据设置。节点。

随着 netpolicy.xml 的更改,您必须重新启动才能使更改生效。

注意:任何这些操作都可能需要以 root 身份运行。

关于android - "Restrict Background Data"是如何在 Android 堆栈中强制执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874746/

相关文章:

android - CONNECTIVITY_CHANGE 在 Android N 的目标中已弃用

android - Android 中的上传和下载速率分析

android - 漂亮干净的 android 滚动像这样? (有图)

android - 容器 'Android Dependencies' 引用了不存在的库 appcompat_v7.jar'

android - Firebase android分页

c# - Android 通过 tcp 套接字从 c# 服务器接收图像

android - 在网络响应后将参数应用于 fragment 时出现 IllegalStateException

java - Appium + Android studio -> 重复条目 : com/thoughtworks/selenium/CommandProcessor. 类

android - 在 Android 上忽略按键

android-networking - 如何在 Android 中配置新的网络接口(interface)