android.app.usage.NetworkStatsManager#android.net.NetworkPolicyManager源码实例Demo

下面列出了android.app.usage.NetworkStatsManager#android.net.NetworkPolicyManager 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public void start() {
    mCM = mContext.getSystemService(ConnectivityManager.class);
    mNPM = mContext.getSystemService(NetworkPolicyManager.class);
    mStatsManager = mContext.getSystemService(NetworkStatsManager.class);

    registerTrackMobileCallback();
    registerNetworkPolicyListener();
    final Uri defaultSettingUri =
            Settings.Global.getUriFor(NETWORK_DEFAULT_DAILY_MULTIPATH_QUOTA_BYTES);
    mResolver.registerContentObserver(defaultSettingUri, false, mSettingsObserver);

    final IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
    mContext.registerReceiverAsUser(
            mConfigChangeReceiver, UserHandle.ALL, intentFilter, null, mHandler);
}
 
private boolean updateFirewallUidRuleLocked(int chain, int uid, int rule) {
    synchronized (mRulesLock) {
        SparseIntArray uidFirewallRules = getUidFirewallRulesLR(chain);

        final int oldUidFirewallRule = uidFirewallRules.get(uid, FIREWALL_RULE_DEFAULT);
        if (DBG) {
            Slog.d(TAG, "oldRule = " + oldUidFirewallRule
                    + ", newRule=" + rule + " for uid=" + uid + " on chain " + chain);
        }
        if (oldUidFirewallRule == rule) {
            if (DBG) Slog.d(TAG, "!!!!! Skipping change");
            // TODO: eventually consider throwing
            return false;
        }

        String ruleName = getFirewallRuleName(chain, rule);
        String oldRuleName = getFirewallRuleName(chain, oldUidFirewallRule);

        if (rule == NetworkPolicyManager.FIREWALL_RULE_DEFAULT) {
            uidFirewallRules.delete(uid);
        } else {
            uidFirewallRules.put(uid, rule);
        }
        return !ruleName.equals(oldRuleName);
    }
}
 
private @NonNull String getFirewallRuleName(int chain, int rule) {
    String ruleName;
    if (getFirewallType(chain) == FIREWALL_TYPE_WHITELIST) {
        if (rule == NetworkPolicyManager.FIREWALL_RULE_ALLOW) {
            ruleName = "allow";
        } else {
            ruleName = "deny";
        }
    } else { // Blacklist mode
        if (rule == NetworkPolicyManager.FIREWALL_RULE_DENY) {
            ruleName = "deny";
        } else {
            ruleName = "allow";
        }
    }
    return ruleName;
}
 
private int listWifiNetworks() {
    final PrintWriter pw = getOutPrintWriter();
    final String arg = getNextArg();
    final int match;
    if (arg == null) {
        match = WifiConfiguration.METERED_OVERRIDE_NONE;
    } else if (Boolean.parseBoolean(arg)) {
        match = WifiConfiguration.METERED_OVERRIDE_METERED;
    } else {
        match = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
    }

    final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
    for (WifiConfiguration config : configs) {
        if (arg == null || config.meteredOverride == match) {
            pw.print(NetworkPolicyManager.resolveNetworkId(config));
            pw.print(';');
            pw.println(overrideToString(config.meteredOverride));
        }
    }
    return 0;
}
 
private int setMeteredWifiNetwork() throws RemoteException {
    final PrintWriter pw = getOutPrintWriter();
    final String networkId = getNextArg();
    if (networkId == null) {
        pw.println("Error: didn't specify networkId");
        return -1;
    }
    final String arg = getNextArg();
    if (arg == null) {
        pw.println("Error: didn't specify meteredOverride");
        return -1;
    }
    mInterface.setWifiMeteredOverride(NetworkPolicyManager.resolveNetworkId(networkId),
            stringToOverride(arg));
    return -1;
}
 
public ConnectivityController(JobSchedulerService service) {
    super(service);

    mConnManager = mContext.getSystemService(ConnectivityManager.class);
    mNetPolicyManager = mContext.getSystemService(NetworkPolicyManager.class);

    // We're interested in all network changes; internally we match these
    // network changes against the active network for each UID with jobs.
    final NetworkRequest request = new NetworkRequest.Builder().clearCapabilities().build();
    mConnManager.registerNetworkCallback(request, mNetworkCallback);

    mNetPolicyManager.registerListener(mNetPolicyListener);
}
 
private void registerNetworkPolicyListener() {
    mPolicyListener = new NetworkPolicyManager.Listener() {
        @Override
        public void onMeteredIfacesChanged(String[] meteredIfaces) {
            // Dispatched every time opportunistic quota is recalculated.
            mHandler.post(() -> updateAllMultipathBudgets());
        }
    };
    mNPM.registerListener(mPolicyListener);
}
 
源代码8 项目: Study_Android_Demo   文件: SettingsBackupAgent.java
private byte[] getNetworkPolicies() {
    NetworkPolicyManager networkPolicyManager =
            (NetworkPolicyManager) getSystemService(NETWORK_POLICY_SERVICE);
    NetworkPolicy[] policies = networkPolicyManager.getNetworkPolicies();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    if (policies != null && policies.length != 0) {
        DataOutputStream out = new DataOutputStream(baos);
        try {
            out.writeInt(NETWORK_POLICIES_BACKUP_VERSION);
            out.writeInt(policies.length);
            for (NetworkPolicy policy : policies) {
                if (policy != null) {
                    byte[] marshaledPolicy = policy.getBytesForBackup();
                    out.writeByte(BackupUtils.NOT_NULL);
                    out.writeInt(marshaledPolicy.length);
                    out.write(marshaledPolicy);
                } else {
                    out.writeByte(BackupUtils.NULL);
                }
            }
        } catch (IOException ioe) {
            Log.e(TAG, "Failed to convert NetworkPolicies to byte array " + ioe.getMessage());
            baos.reset();
        }
    }
    return baos.toByteArray();
}
 
源代码9 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码10 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码11 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码12 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码13 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码14 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码15 项目: AndroidComponentPlugin   文件: ContextImpl.java
@Override
public Object createService(ContextImpl ctx) {
    return new NetworkPolicyManager(INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getService(NETWORK_POLICY_SERVICE)));
}
 
源代码16 项目: android_9.0.0_r45   文件: NetworkPolicyLogger.java
private static String getPolicyChangedLog(int uid, int oldPolicy, int newPolicy) {
    return "Policy for " + uid + " changed from "
            + NetworkPolicyManager.uidPoliciesToString(oldPolicy) + " to "
            + NetworkPolicyManager.uidPoliciesToString(newPolicy);
}
 
源代码17 项目: android_9.0.0_r45   文件: SystemServiceRegistry.java
@Override
public NetworkPolicyManager createService(ContextImpl ctx) throws ServiceNotFoundException {
    return new NetworkPolicyManager(ctx, INetworkPolicyManager.Stub.asInterface(
            ServiceManager.getServiceOrThrow(Context.NETWORK_POLICY_SERVICE)));
}