使用广播监听网络状况
来源:互联网 发布:编程开发 编辑:程序博客网 时间:2024/05/18 03:19
使用广播实时监听广播
使用Service后台绑定一个广播然后实时监听网络状况
写一个Service
import com.gitonway.lee.niftymodaldialogeffects.lib.Effectstype;import com.gitonway.lee.niftymodaldialogeffects.lib.NiftyDialogBuilder;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.IBinder;import android.util.Log;import android.view.View;import android.widget.Toast;public class NetService extends Service {private ConnectivityManager connectivityManager;private NetworkInfo info;private NiftyDialogBuilder dialogBuilder;private Effectstype effect;private BroadcastReceiver mReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {Log.d("mark", "网络状态已经改变");connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);info = connectivityManager.getActiveNetworkInfo();if (info != null && info.isAvailable()) {String name = info.getTypeName();Log.d("mark", "当前网络名称:" + name);Toast.makeText(getApplicationContext(), name, 0).show();} else {Log.d("mark", "没有可用网络");Toast.makeText(getApplicationContext(), "无网络", 0).show();showDiaog();}}}};@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();dialogBuilder = NiftyDialogBuilder.getInstance(this);IntentFilter mFilter = new IntentFilter();mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(mReceiver, mFilter);// 绑定广播}@Overridepublic void onDestroy() {super.onDestroy();unregisterReceiver(mReceiver);// 注销广播}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {return super.onStartCommand(intent, flags, startId);}public void showDiaog() {dialogBuilder.withTitle("Modal Dialog")// .withTitle(null) no title.withTitleColor("#FFFFFF")// def.withDividerColor("#11000000")// def.withMessage("无网络" +"是否切换为蓝牙?")// .withMessage(null) no Msg.withMessageColor("#FFFFFF")// def.withIcon(getResources().getDrawable(R.drawable.icon)).isCancelableOnTouchOutside(true) // def | isCancelable(true).withDuration(700) // def.withEffect(effect) // def Effectstype.Slidetop.withButton1Text("OK") // def gone.withButton2Text("Cancel") // def gone.setButton1Click(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(v.getContext(), "请打开蓝牙",Toast.LENGTH_SHORT).show();dialogBuilder.dismiss();}}).setButton2Click(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBuilder.dismiss();}}).show();}}这里面的对话框是GitHub上的对话框;
在Activity去开启服务就好了:
Intent intent = new Intent(MainActivity.this, NetService.class);startService(intent);如果只是停止这个Activity,然后在onstop中去关闭服务
@Overrideprotected void onStop() {super.onStop();stopService(intent);}这个样就可以后台去监听网络状况了
如果只是使用广播去判断网络呢?工具类先不说:
定义一个广播
public class NetRevice extends BroadcastReceiver {private ConnectivityManager connectivityManager;private NetworkInfo info;private Context context;public static int conn;public static String name;public NetRevice(Context context) {this.context = context;}@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {Log.d("mark", "网络状态已经改变");connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);info = connectivityManager.getActiveNetworkInfo();if (info != null && info.isAvailable()) {name = info.getTypeName();Log.d("mark", "当前网络名称:" + name);//Toast.makeText(context, name, 0).show();conn=0;} else {Log.d("mark", "没有可用网络");//Toast.makeText(context, "无网络",1).show();conn=1;}}}}然后在Activity中:
public class MainActivity extends Activity {private NetRevice mNetRevice;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mNetRevice = new NetRevice(getApplicationContext());IntentFilter mFilter = new IntentFilter();mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(mNetRevice, mFilter);// 绑定广播System.out.println("----->>>"+NetRevice.conn);if(NetRevice.conn==0){Toast.makeText(getApplicationContext(), NetRevice.name, 0).show();}if(NetRevice.conn==1){Toast.makeText(getApplicationContext(), "无网络", 0).show();}}@Overridepublic void onDestroy() {super.onDestroy();unregisterReceiver(mNetRevice);// 注销广播}}
0 0
- 使用广播监听网络状况
- android 通过广播监听网络连接状况
- 安卓通过广播实时监听当前网络状况
- 安卓通过广播实时监听当前网络状况
- 使用广播监听网络变化
- network: android 使用广播监听网络状态
- network: android 使用广播监听网络状态
- android 使用广播监听网络状态
- network: android 使用广播监听网络状态
- android 使用广播监听网络状态
- network: android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络状态
- android 使用广播监听网络切换
- 简单搭建 nginx负载均衡 + tomcat集群+memcache session共享(笔记)
- ANR_eoe
- 三级联动(数据库设计)
- webapp开发调试环境--weinre配置
- java编程思想(第四版)第二章练习题-12
- 使用广播监听网络状况
- jquery 鼠标放入input框值清空离开恢复默认值
- ActionContext和ServletActionContext小结
- 在android的UI界面中实现全屏、或者去掉标题栏的效果
- 遍历map
- Python中的多进程处理
- Android应用如何开机自启动、自启动失败原因
- 简介(二)
- poj 1088+动态规划+记忆化搜索