Search in sources :

Example 81 with NetworkInfo

use of android.net.NetworkInfo in project android_frameworks_base by ParanoidAndroid.

the class ConnectivityService method getFilteredNetworkInfo.

/**
     * Return a filtered {@link NetworkInfo}, potentially marked
     * {@link DetailedState#BLOCKED} based on
     * {@link #isNetworkBlocked(NetworkStateTracker, int)}.
     */
private NetworkInfo getFilteredNetworkInfo(NetworkStateTracker tracker, int uid) {
    NetworkInfo info = tracker.getNetworkInfo();
    if (isNetworkBlocked(tracker, uid)) {
        // network is blocked; clone and override state
        info = new NetworkInfo(info);
        info.setDetailedState(DetailedState.BLOCKED, null, null);
    }
    if (mLockdownTracker != null) {
        info = mLockdownTracker.augmentNetworkInfo(info);
    }
    return info;
}
Also used : NetworkInfo(android.net.NetworkInfo)

Example 82 with NetworkInfo

use of android.net.NetworkInfo in project android_frameworks_base by ParanoidAndroid.

the class ConnectivityService method handleInetConditionHoldEnd.

private void handleInetConditionHoldEnd(int netType, int sequence) {
    if (DBG) {
        log("handleInetConditionHoldEnd: net=" + netType + ", condition=" + mDefaultInetCondition + ", published condition=" + mDefaultInetConditionPublished);
    }
    mInetConditionChangeInFlight = false;
    if (mActiveDefaultNetwork == -1) {
        if (DBG)
            log("handleInetConditionHoldEnd: no active default network - ignoring");
        return;
    }
    if (mDefaultConnectionSequence != sequence) {
        if (DBG)
            log("handleInetConditionHoldEnd: event hold for obsolete network - ignoring");
        return;
    }
    // TODO: Figure out why this optimization sometimes causes a
    //       change in mDefaultInetCondition to be missed and the
    //       UI to not be updated.
    //if (mDefaultInetConditionPublished == mDefaultInetCondition) {
    //    if (DBG) log("no change in condition - aborting");
    //    return;
    //}
    NetworkInfo networkInfo = mNetTrackers[mActiveDefaultNetwork].getNetworkInfo();
    if (networkInfo.isConnected() == false) {
        if (DBG)
            log("handleInetConditionHoldEnd: default network not connected - ignoring");
        return;
    }
    mDefaultInetConditionPublished = mDefaultInetCondition;
    sendInetConditionBroadcast(networkInfo);
    return;
}
Also used : NetworkInfo(android.net.NetworkInfo)

Example 83 with NetworkInfo

use of android.net.NetworkInfo in project android_frameworks_base by ParanoidAndroid.

the class ConnectivityService method handleMobileProvisioningAction.

private void handleMobileProvisioningAction(String url) {
    // Notication mark notification as not visible
    setProvNotificationVisible(false, ConnectivityManager.TYPE_NONE, null, null);
    // If provisioning network handle as a special case,
    // otherwise launch browser with the intent directly.
    NetworkInfo ni = getProvisioningNetworkInfo();
    if ((ni != null) && ni.isConnectedToProvisioningNetwork()) {
        if (DBG)
            log("handleMobileProvisioningAction: on provisioning network");
        MobileDataStateTracker mdst = (MobileDataStateTracker) mNetTrackers[ConnectivityManager.TYPE_MOBILE];
        mdst.enableMobileProvisioning(url);
    } else {
        if (DBG)
            log("handleMobileProvisioningAction: on default network");
        Intent newIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        newIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
        try {
            mContext.startActivity(newIntent);
        } catch (ActivityNotFoundException e) {
            loge("handleMobileProvisioningAction: startActivity failed" + e);
        }
    }
}
Also used : NetworkInfo(android.net.NetworkInfo) ActivityNotFoundException(android.content.ActivityNotFoundException) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) MobileDataStateTracker(android.net.MobileDataStateTracker)

Example 84 with NetworkInfo

use of android.net.NetworkInfo in project android_frameworks_base by ParanoidAndroid.

the class ConnectivityService method getProvisioningNetworkInfo.

/**
     * Find the first Provisioning network.
     *
     * @return NetworkInfo or null if none.
     */
private NetworkInfo getProvisioningNetworkInfo() {
    enforceAccessPermission();
    // Find the first Provisioning Network
    NetworkInfo provNi = null;
    for (NetworkInfo ni : getAllNetworkInfo()) {
        if (ni.isConnectedToProvisioningNetwork()) {
            provNi = ni;
            break;
        }
    }
    if (DBG)
        log("getProvisioningNetworkInfo: X provNi=" + provNi);
    return provNi;
}
Also used : NetworkInfo(android.net.NetworkInfo)

Example 85 with NetworkInfo

use of android.net.NetworkInfo in project android_frameworks_base by ParanoidAndroid.

the class LockdownVpnTracker method handleStateChangedLocked.

/**
     * Watch for state changes to both active egress network, kicking off a VPN
     * connection when ready, or setting firewall rules once VPN is connected.
     */
private void handleStateChangedLocked() {
    Slog.d(TAG, "handleStateChanged()");
    final NetworkInfo egressInfo = mConnService.getActiveNetworkInfoUnfiltered();
    final LinkProperties egressProp = mConnService.getActiveLinkProperties();
    final NetworkInfo vpnInfo = mVpn.getNetworkInfo();
    final VpnConfig vpnConfig = mVpn.getLegacyVpnConfig();
    // Restart VPN when egress network disconnected or changed
    final boolean egressDisconnected = egressInfo == null || State.DISCONNECTED.equals(egressInfo.getState());
    final boolean egressChanged = egressProp == null || !TextUtils.equals(mAcceptedEgressIface, egressProp.getInterfaceName());
    if (egressDisconnected || egressChanged) {
        clearSourceRulesLocked();
        mAcceptedEgressIface = null;
        mVpn.stopLegacyVpn();
    }
    if (egressDisconnected) {
        hideNotification();
        return;
    }
    final int egressType = egressInfo.getType();
    if (vpnInfo.getDetailedState() == DetailedState.FAILED) {
        EventLogTags.writeLockdownVpnError(egressType);
    }
    if (mErrorCount > MAX_ERROR_COUNT) {
        showNotification(R.string.vpn_lockdown_error, R.drawable.vpn_disconnected);
    } else if (egressInfo.isConnected() && !vpnInfo.isConnectedOrConnecting()) {
        if (mProfile.isValidLockdownProfile()) {
            Slog.d(TAG, "Active network connected; starting VPN");
            EventLogTags.writeLockdownVpnConnecting(egressType);
            showNotification(R.string.vpn_lockdown_connecting, R.drawable.vpn_disconnected);
            mAcceptedEgressIface = egressProp.getInterfaceName();
            mVpn.startLegacyVpn(mProfile, KeyStore.getInstance(), egressProp);
        } else {
            Slog.e(TAG, "Invalid VPN profile; requires IP-based server and DNS");
            showNotification(R.string.vpn_lockdown_error, R.drawable.vpn_disconnected);
        }
    } else if (vpnInfo.isConnected() && vpnConfig != null) {
        final String iface = vpnConfig.interfaze;
        final String sourceAddr = vpnConfig.addresses;
        if (TextUtils.equals(iface, mAcceptedIface) && TextUtils.equals(sourceAddr, mAcceptedSourceAddr)) {
            return;
        }
        Slog.d(TAG, "VPN connected using iface=" + iface + ", sourceAddr=" + sourceAddr);
        EventLogTags.writeLockdownVpnConnected(egressType);
        showNotification(R.string.vpn_lockdown_connected, R.drawable.vpn_connected);
        try {
            clearSourceRulesLocked();
            mNetService.setFirewallInterfaceRule(iface, true);
            mNetService.setFirewallEgressSourceRule(sourceAddr, true);
            mErrorCount = 0;
            mAcceptedIface = iface;
            mAcceptedSourceAddr = sourceAddr;
        } catch (RemoteException e) {
            throw new RuntimeException("Problem setting firewall rules", e);
        }
        mConnService.sendConnectedBroadcast(augmentNetworkInfo(egressInfo));
    }
}
Also used : VpnConfig(com.android.internal.net.VpnConfig) NetworkInfo(android.net.NetworkInfo) RemoteException(android.os.RemoteException) LinkProperties(android.net.LinkProperties)

Aggregations

NetworkInfo (android.net.NetworkInfo)511 ConnectivityManager (android.net.ConnectivityManager)274 Intent (android.content.Intent)47 LinkProperties (android.net.LinkProperties)38 NetworkState (android.net.NetworkState)26 Test (org.junit.Test)26 PendingIntent (android.app.PendingIntent)23 NetworkCapabilities (android.net.NetworkCapabilities)18 Network (android.net.Network)17 LargeTest (android.test.suitebuilder.annotation.LargeTest)17 RemoteException (android.os.RemoteException)16 Context (android.content.Context)15 NetworkAgentInfo (com.android.server.connectivity.NetworkAgentInfo)15 WifiInfo (android.net.wifi.WifiInfo)13 Bundle (android.os.Bundle)13 TestUtils.mockNetworkInfo (com.squareup.picasso.TestUtils.mockNetworkInfo)12 IOException (java.io.IOException)11 WifiManager (android.net.wifi.WifiManager)9 IntentFilter (android.content.IntentFilter)8 BroadcastReceiver (android.content.BroadcastReceiver)7