android 网络开发
来源:互联网 发布:windows商店app 编辑:程序博客网 时间:2024/06/06 07:22
1.Android 监控网络状态
public
static
boolean
isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if
(connectivity ==
null
) {
Log.i(
"NetWorkState"
,
"Unavailabel"
);
return
false
;
}
else
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if
(info !=
null
) {
for
(
int
i =
0
; i < info.length; i++) {
if
(info<i>.getState() == NetworkInfo.State.CONNECTED) {
Log.i(
"NetWorkState"
,
"Availabel"
);
return
true
;
}
}
}
}
return
false
;
}</i>
上面这个方法就是判断网络是否连接的代码,返回true表示有网络,返回false表示无网络. 在Android网络应用程序开发中,经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化.android的网络状态监听可以用BroadcastReceiver来接收网络状态改变的广 播,具体实现如下:
@Override
public
void
onReceive(Context context, Intent intent) {
Log.e(TAG,
"网络状态改变"
);
boolean
success =
false
;
//获得网络连接服务
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
// State state = connManager.getActiveNetworkInfo().getState();
State state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).getState();
// 获取网络连接状态
if
(State.CONNECTED == state) {
// 判断是否正在使用WIFI网络
success =
true
;
}
state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState();
// 获取网络连接状态
if
(State.CONNECTED != state) {
// 判断是否正在使用GPRS网络
success =
true
;
}
if
(!success) {
Toast.makeText(LocationMapActivity.
this
,
"您的网络连接已中断"
, Toast.LENGTH_LONG).show();
}
}
在Activity的onCreate中:
//注册网络监听
IntentFilter filter =
new
IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
//在Activity中的onDestroy中:'
unregisterReceiver(mNetworkStateReceiver);
//取消监听
2.Android 判断网络状态
Android 判断网络状态这一应用技巧在实际应中是比较重要的。那么,在Android操作系统中,
如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析。
public
class
ConnectionChangeReceiver
extends
BroadcastReceiver
{
@Override
public
void
onReceive( Context context, Intent intent ) {
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService
( Context.CONNECTIVITY_SERVICE ); NetworkInfo activeNetInfo = connectivityManager.
getActiveNetworkInfo();
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo
( ConnectivityManager.TYPE_MOBILE );
if
( activeNetInfo !=
null
)
{ Toast.makeText( context,
"Active Network Type : "
+
activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
}
if
( mobNetInfo !=
null
)
{ Toast.makeText( context,
"Mobile Network Type : "
+
mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show();
} }
} < !-- Needed to check when the network connection changes -->
<
uses-permission
android:name
=
"android.permission.ACCESS_NETWORK_STATE"
/>
<
receiver
android:name="com.blackboard.androidtest.
receiver.ConnectionChangeReceiver"
android:label
=
"NetworkConnection"
>
<
intent-filter
>
<
action
android:name
=
"android.net.conn.CONNECTIVITY_CHANGE"
/>
< /
intent-filter
>
< /receiver>
Android判断网络状态的具体应用方法就为大家介绍到这里。
3.android获取当前网络连接状态以及调用网络配置界面
最近有这个应用需求,就查找了些网上资料并自己总结出了一个
android获取当前网络连接状态以及调用网络配置界面的工具类;
不多说,代码如下 TestNet.java类:
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
public class TestNet {
/**
* 检测网络是否存在
*/
public static void HttpTest(final Activity mActivity)
{
if( !isNetworkAvailable( mActivity) ){
AlertDialog.Builder builders = new AlertDialog.Builder(mActivity);
builders.setTitle("抱歉,网络连接失败,是否进行网络设置?");
builders.setPositiveButton("确定",
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which)
{
//进入无线网络配置界面
mActivity.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //进入手机中的wifi网络设置界面
}
});
builders.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//关闭当前activity
mActivity.finish();
}
});
builders.show();
}
}
//检测网络是否可用
public static boolean isNetworkAvailable( Activity mActivity ) {
Context context = mActivity.getApplicationContext();
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
}
另外记得在AndroidManifest.xml文件加上
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这个访问网络权限。
============================
/**
* 获得当前联网类型wifi or mobile
*
* @return -1: 无连接类型; ConnectivityManager.TYPE_WIFI: wifi;
* ConnectivityManager.TYPE_MOBILE:mobile。判断网络连接状态为时mobile最好增加判断是net还是wap网络
*/
public int GetNetWorkType() {
if (getConnectManager() != null) {
NetworkInfo networkInfo = getConnectManager()
.getActiveNetworkInfo();
if (networkInfo != null)
return networkInfo.getType();
return -1;
} else {
return -1;
}
}
- Android网络开发详解
- Android 网络开发
- Android网络开发详解
- android 开发,离不开网络
- Android网络开发基础知识
- android 网络开发
- Android网络连接开发
- Android网络开发详解
- Android--网络开发
- android 网络开发
- Android 网络开发
- Android 网络开发注意事项
- Android网络开发框架
- Android网络开发-URL
- Android开发:网络编程
- Android网络开发基础知识
- android网络开发详解
- android开发网络请求
- Box2d源码学习<六>动态树的实现
- memcache(使用telnet操作)
- 儒林外史
- /停止/重启MySQL
- 服务外包趋势将持续 至2016年放缓
- android 网络开发
- Box2d源码学习<七>Broad-phase的实现
- UCOS_II学习笔记---信号量管理之信号量的使用-进程(任务)同步
- Mysql启动失败Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysq
- 将数组转换为CString 型变量
- mysql修改表名
- Java+PHP整合
- SQL Server 2005/2008 触发器的管理和查看
- Box2d源码学习<八>形状(上):父形状的实现