frameworks\base\services\java\com\android\server\SystemServer.java

    1. 在文件末尾增加如下代码

      1. /// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913.
      2. /// Need to set the list on every boot.
      3. /// @see FAQ10820 & FAQ20276
      4. private final static String[] blacklistPkgs = {
      5. "com.baidu.input", //Baidu Input
      6. };
      7. private void setFirewallUidChainRules(PackageManager pm){
      8. final android.os.INetworkManagementService netManager = android.os.INetworkManagementService.Stub
      9. .asInterface(ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
      10. try {
      11. for(String pkg : blacklistPkgs){
      12. int uid = pm.getPackageUid(pkg, UserHandle.myUserId());
      13. //Log.e("Shawn", "SS >> setFirewallUidChainRules, uid = "+uid);
      14. if(uid > 0){
      15. netManager.setFirewallUidChainRule(uid, 1, true); //WIFI
      16. netManager.setFirewallUidChainRule(uid, 0, true); //MOBILE
      17. }
      18. }
      19. }
      20. catch (/* PackageManager.NameNotFound */Exception e){
      21. //Log.e("Shawn", "SS >> setFirewallUidChainRules, e = "+e);
      22. }
      23. }
      24. /// END. Network Firewall For Some Apps. By ShawnXiaFei@20180913.
    2. 在如下方法末尾插入代码:

      1. /**
      2. * Starts a miscellaneous grab bag of stuff that has yet to be refactored
      3. * and organized.
      4. */
      5. private void startOtherServices() {
      6. // 省略大量代码
      7. /// M: RecoveryManagerService @{
      8. try {
      9. if (mRecoveryManagerService != null) {
      10. mRecoveryManagerService.stopBootMonitor();
      11. }
      12. } catch (Throwable e) {
      13. reportWtf("Failure Stop Boot Monitor", e);
      14. }
      15. /// @}
      16. /// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913.
      17. setFirewallUidChainRules(mPackageManager);
      18. /// START. Network Firewall For Some Apps. By ShawnXiaFei@20180913.
      19. }