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 & FAQ20276
private 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); //WIFI
netManager.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.
}