当前位置: 首页 > 知识库问答 >
问题:

检测WiFi或移动网络

包沈义
2023-03-14

我需要解决这个问题。请帮我指导一下。

共有1个答案

孙梓
2023-03-14

所以实际上你有四种状态(+第五,如果有没有互联网)

当网络可用时,你必须通过监控Wifi和移动网络的状态来检查互联网提供商,你的四种状态是

Wifi改变状态和

累犯实施

检查接收器中的更改,然后检查状态

public class Internet_State extends BroadcastReceiver {
//checked with new state changed when event occurs
public boolean oldInternetState;

@Override
public void onReceive(Context context, Intent intent) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    Bundle b = intent.getExtras();
    // if Internet available
    boolean isConnected = !b
            .getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY);
            // ignore if no state change
    if (oldInternetState == isConnected)
        return;
    // set new oldInternetState
    oldInternetState = isConnected;
    boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE;
    boolean isWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
            .isAvailable();
 //you can save these states to be monitored in wifi and mobile change change listners

    //No internet is 0 state
    int state = isConnected?1:0;
            if(state)
            state = checkState(context)
    intent.putExtra("state", state);
             // and then send this intent to your required method which will
             // check the state and perform function
}

@Override
public void initialize(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            //save the current internet state at start of the receiver registration
    oldInternetState = false;
    if (activeNetwork != null)
        oldInternetState = activeNetwork.isConnectedOrConnecting();
}

}

实现两个,移动和wifi状态改变广播累犯,更好地添加一个状态检查方法,如下所示

public int checkState(Context context){
            ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isMobile = activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE;
    boolean isWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
            .isAvailable();
    //No internet is 0 state
    int state = isConnected?1:0;
    if(isWifi && isMobile)
        state = 1;
    else if(isWifi && !isMobile)
        state = 2;
    if(isMobile && isWifi)
        state = 3;
    else if(isMobile && !isWifi)
        state = 4;
       return state;
}
 NetworkInfo allNetInfo = cm
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    oldDataState = allNetInfo.getState();
int state = intent.getExtras().getInt(WifiManager.EXTRA_WIFI_STATE);
    if (state == WifiManager.WIFI_STATE_ENABLED)
        state = 1;
    else if (state == WifiManager.WIFI_STATE_DISABLED)
        state = 0;
    else
        return;
    if (state == oldWifiState)
        return;
    oldWifiState = state;

问题我将WiFi启用2到3次

因为Wifi改变状态,比如TurningOn和TurningOf是由操作系统触发的,你必须取消它们,就像我在上面做的那样

if (state == WifiManager.WIFI_STATE_ENABLED)
        state = 1;
    else if (state == WifiManager.WIFI_STATE_DISABLED)
        state = 0;
    else
        return;

现在只监视启用和禁用。

 类似资料:
  • 我的目标是有一个移动网站(手机和平板电脑)和一个响应桌面网站,建立在Wordpress上。我想最简单的方法来实现傻瓜证明设备检测。 移动网站将会有很多只对触摸设备有益的功能,并将为手机和平板电脑定制设计。桌面网站将完全不同(有相同的页面,但有额外的内容),并将充分响应,以防任何设备逃过检测。 我有一个可以检测触摸设备并重定向到另一个页面的衬里,但它似乎太简单了,不是一个简单的设备检测方法。这是多么

  • 1. 什么是移动落地页检测工具?  移动落地页检测工具是由百度搜索资源平台推出的,检测移动落地页是否符合《百度APP移动搜索落地页体验白皮书5.0》规范的工具。 移动落地页检测工具主要分为站点检测和URL校验两个功能。站点检测可对移动站点进行检测,URL校验是针对提交的URL页面检测。 本工具提供网站或URL重要问题反馈,但不是唯一问题,站点仍需全站自查。 2. 如何使用移动落地页检测工具? 第一

  • 问题内容: 我正在寻找一个函数,如果用户具有移动浏览器,该函数将返回布尔值。 我知道我可以通过使用正则表达式来使用和编写该函数,但是对于不同的平台,用户代理种类繁多。我怀疑匹配所有可能的设备会很容易,并且我认为这个问题已经解决了很多次,因此应该为此类任务提供某种完整的解决方案。 我当时在看这个站点,但是可悲的是脚本太神秘了,以至于我不知道如何使用它来创建一个返回true / false的函数。 问

  • 问题内容: 我需要一种在服务器端检测移动浏览器的方法。我想要一种方法,几乎​​不需要做任何设置,也不需要维护,但仍然可以(至少非常准确地)为我提供对Android,Mobile Safari和Blackberry浏览器以及Opera之类的浏览器的准确检测。 我希望至少 涵盖整个移动市场 ,并且如果花费不多,我实际上会更喜欢几乎所有的市场。 问题答案: WURLF是移动浏览器检测的最终方法,并且提供

  • 所以问题是当用户关闭WiFi按钮时,移动数据仍然连接,但我仍然收到WiFi关闭的通知。它指示我网络断开,即使我的手机仍然连接到移动数据。 但一秒钟后,我收到移动数据连接的通知。但是一旦我收到网络断开,我已经关闭了我的VoIP呼叫。因此,当我收到WiFi关闭的通知时,我如何确定移动数据是否仍然连接。 我尝试了getActiveNetworkInfo(),但当我收到WiFi关闭的通知时,它碰巧为nul

  • 问题内容: 我有一个网站,我想检测使用哪个浏览器并将其重定向。我有一个php索引,并且代码必须在php中。我发现了很多网站,但它们无法正常工作,或者它们无法检测到许多移动浏览器。您是否知道可以检测许多移动浏览器的任何好的代码或教程? 问题答案: 有我的用户代理代码: 如何使用: