展会信息港展会大全

android 监听wifi和数据连接
来源:互联网   发布日期:2015-09-28 16:05:15   浏览:2356次  

导读:我们项目现在改登录流程,是在wifi或者数据连接开启并且连接到网络的时候,来后台自动注册和登录账户。这样好像可以增加用户数。我的实现,是通过广播BroadCastReciver触发器组件来实...

我们项目现在改登录流程,是在wifi或者数据连接开启并且连接到网络的时候,来后台自动注册和登录账户。这样好像可以增加用户数。

我的实现,是通过广播BroadCastReciver触发器组件来实现,在项目中,为了全局性,实在服务中注册的,测出的demo只是在应用中的,原理都一样,只是注册的地方不同而已。

代码如下:

package com.example.netlistener;

import android.net.ConnectivityManager;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.IntentFilter;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

BroadcastReceiver receiver=new NetBroadCastReciver();

//注册BroadCastReciver,设置监听的频道。就是filter中的

IntentFilter filter=new IntentFilter();

filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);

filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

registerReceiver(receiver, filter);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

}

package com.example.netlistener;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.net.wifi.WifiManager;

import android.os.Parcelable;

import android.util.Log;

public class NetBroadCastReciver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

//判断wifi是打开还是关闭

if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())){ //此处无实际作用,只是看开关是否开启

int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);

switch (wifiState) {

case WifiManager.WIFI_STATE_DISABLED:

break;

case WifiManager.WIFI_STATE_DISABLING:

break;

}

}

//此处是主要代码,

//如果是在开启wifi连接和有网络状态下

if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);

if(NetworkInfo.State.CONNECTED==info.getState()){

//连接状态

Log.e("pzf", "有网络连接");

//执行后续代码

//new AutoRegisterAndLogin().execute((String)null);

//ps:由于boradCastReciver触发器组件,他和Service服务一样,都是在主线程的,所以,如果你的后续操作是耗时的操作,请new Thread获得AsyncTask等,进行异步操作

}else{

Log.e("pzf", "无网络连接");

}

}

}

}

源码地址:

http://download.csdn.net/detail/pangzaifei/6938315

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港