【问题标题】:how to know when device connect to internet (Wi-fi/Mobile data) in Android如何在 Android 中知道设备何时连接到互联网(Wi-fi/移动数据)
【发布时间】:2014-05-24 14:23:48
【问题描述】:

我想在设备连接到 wi-fi 或移动数据后立即与服务器通信。目前我正在使用广播接收器来通知设备何时连接到 wifi 代码如下:

<receiver android:name="com.example.rup35h.WifiReceiver" >
        <intent-filter android:priority="100" >
            <action android:name="android.net.wifi.STATE_CHANGE" />
        </intent-filter>
    </receiver>

我担心当设备连接到移动数据时它会起作用。当用户打开移动数据/3G 网络时,这也会被调用吗?

请让我知道是否有人会对此有所了解。 提前致谢。

【问题讨论】:

    标签: android android-intent broadcastreceiver android-wifi


    【解决方案1】:

    当用户打开移动数据/3G 网络时,这是否也会被调用。

    不,它不会执行,所以当您使用移动数据/3G 网络时,它不会执行,您还必须添加它

    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    

    检查你是否连接到WiFi

    ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    

    啊,我看到你的评论了

    我只需要检查设备是否已连接即可。

    这很简单,你可以像下面那样做

    /**
     * This method check mobile is connected to network.
     * @param context
     * @return true if connected otherwise false.
     */
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if(conMan.getActiveNetworkInfo() != null && conMan.getActiveNetworkInfo().isConnected())
            return true;
        else
            return false;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多