frameworks\base\services\java\com\android\server\SystemServer.java
在文件末尾增加如下代码
/// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913./// Need to set the list on every boot./// @see FAQ10820 & FAQ20276private final static String[] blacklistPkgs = {"com.baidu.input", //Baidu Input};private void setFirewallUidChainRules(PackageManager pm){final android.os.INetworkManagementService netManager = android.os.INetworkManagementService.Stub.asInterface(ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));try {for(String pkg : blacklistPkgs){int uid = pm.getPackageUid(pkg, UserHandle.myUserId());//Log.e("Shawn", "SS >> setFirewallUidChainRules, uid = "+uid);if(uid > 0){netManager.setFirewallUidChainRule(uid, 1, true); //WIFInetManager.setFirewallUidChainRule(uid, 0, true); //MOBILE}}}catch (/* PackageManager.NameNotFound */Exception e){//Log.e("Shawn", "SS >> setFirewallUidChainRules, e = "+e);}}/// END. Network Firewall For Some Apps. By ShawnXiaFei@20180913.
在如下方法末尾插入代码:
/*** Starts a miscellaneous grab bag of stuff that has yet to be refactored* and organized.*/private void startOtherServices() {// 省略大量代码/// M: RecoveryManagerService @{try {if (mRecoveryManagerService != null) {mRecoveryManagerService.stopBootMonitor();}} catch (Throwable e) {reportWtf("Failure Stop Boot Monitor", e);}/// @}/// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913.setFirewallUidChainRules(mPackageManager);/// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913.}
