我有一个应用程序试图成为一个优秀的撒玛利亚人,基本上是在启动任何需要与网络进行交互的服务时.我正在检查设备是否具有连接性:
hasConnectivity方法
private boolean hasConnectivity() { NetworkInfo info = mConnectivity.getActiveNetworkInfo(); boolean connected = false; int netType = -1; int netSubtype = -1; if (info == null) { Log.w(sTag, "network info is null"); notifyUser(MyIntent.ACTION_VIEW_ALL, "There is no network connectivity.", false); } else if (!mConnectivity.getBackgroundDataSetting()) { Log.w(sTag, "background data setting is not enabled"); notifyUser(MyIntent.ACTION_VIEW_ALL, "background data setting is Disabled", false); } else { netType = info.getType(); netSubtype = info.getSubtype(); if (netType == ConnectivityManager.TYPE_WIFI) { connected = info.isConnected(); } else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_umts && !mTelephonyManager.isNetworkRoaming() ) { connected = info.isConnected(); } else if (info.isRoaming()) { notifyUser(MyIntent.ACTION_VIEW_ALL, "Currently Roaming skipPing check.", false); } else if (info.isAvailable()) { connected = info.isConnected(); } else { notifyUser(MyIntent.ACTION_VIEW_ALL, "..There is no network connectivity.", false); } } return connected;}
当此方法返回false时,我知道我没有连接,因为用户正在使用电话或3g,并且wifi不可用
在不使用计时器定期提取网络统计信息的情况下,知道何时可用的最佳方法是什么?
我是否可以通过广播接收器观察到Intent动作,该动作将宣布连接发生变化?
感谢您的帮助,我将继续在文档中搜索有关下一步 *** 作的一些线索.
解决方法:
这就是我检查Internet访问的功能(实际上,更像是启用了Wifi并已将其连接到网络).
public class ConnectivityReceiver extends broadcastReceiver {@OverrIDepublic voID onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); MainMap.setWifiState(wm.getWifiState()); Log.e("DeBUG", "Setting wifistate: " + wm.getWifiState()); } else if(action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { NetworkInfo ni = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); MainMap.setConnected(ni.isConnected()); Log.e("DeBUG", "Setting isConnected: " + ni.isConnected()); if(ni.isConnected()) Toast.makeText(context, "Connected!", Toast.LENGTH_LONG).show(); }}
}
检查用户是使用3G还是使用Wi-Fi并不难.
总结以上是内存溢出为你收集整理的知道网络连接何时恢复全部内容,希望文章能够帮你解决知道网络连接何时恢复所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)