版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
Android专栏收录该内容
1 篇文章0 订阅
订阅专栏
先看看需求:现在4G流量费用比较昂贵,为了避免流量的消耗,我们可以限制某个应用连接网络,或者限制某个app只能使用wifi等等。
再看看效果图:
当我们使用流量上网时,会发现此时谷歌浏览器无法连接网络,这就达到了我们的目的。
不多说,直接上代码。
1.第一步:我们需要把我们控制网络的方法声明在frameworks/base/core/Java/android/os/INetworkManagementService.aidl中:
interface INetworkManagementService { …… void setMobileDataUidRule(int uid, boolean allow); void setWifiDataUidRule(int uid, boolean allow); …… }
第二步:在frameworks/base/services/core/java/com/android/server目录下的NetworkManagementService.java中实现我们声明的两个方法:
//add by xiaoxsen public void setMobileDataUidRule(int uid, boolean allow) { enforceSystemUid();//check try {	final String rule = allow ? "allow" : "deny"; mConnector.execute("firewall", "set_mobile_data_uid_rule", uid, rule); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); } } public void setWifiDataUidRule(int uid, boolean allow) { enforceSystemUid(); try {