我需要解决这个问题。请帮我指导一下。
所以实际上你有四种状态(+第五,如果有没有互联网)
当网络可用时,你必须通过监控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中。我发现了很多网站,但它们无法正常工作,或者它们无法检测到许多移动浏览器。您是否知道可以检测许多移动浏览器的任何好的代码或教程? 问题答案: 有我的用户代理代码: 如何使用: