广播与okhttp联网(实现联网就访问网络的功能)
来源:互联网 发布:儿童英语跟读软件 编辑:程序博客网 时间:2024/06/06 12:28
权限:
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>导入类库:
compile 'com.squareup.okhttp3:okhttp:3.4.1'
主要的代码:
public class MainActivity extends Activity { NotificationManager notificationManager; ConnectivityManager connectivityManager; Notification.Builder builder; int NETWORK = 0; int NETWORK_UNKNOWN = 0;//无 int NETWORK_2g = 1;//2g int NETWORK_3g = 2;//3g int NETWORK_4g = 3;//4g int NETWORK_wifi = 4;//wifi TelephonyManager telephonyManager; NetWork network; TextView textView; NetworkInfo networkInfo; // 创建处理对象handler Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: textView.setText("联网失败"); break; case 1: String obj = (String) msg.obj; textView.setText(obj); break; default: textView.setText("联网失败"); break; } } }; protected void onDestroy() { super.onDestroy(); unregisterReceiver(network); } //获取联网的状态 public int getNetworkState() { switch (telephonyManager.getNetworkType()) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: case TelephonyManager.NETWORK_TYPE_IDEN: return NETWORK_2g; case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_HSPAP: return NETWORK_3g; case TelephonyManager.NETWORK_TYPE_LTE: return NETWORK_4g; default: return NETWORK_UNKNOWN; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text1); regNetReceiver();//注册一个广播 getNetWorkStatus();//获取联网的工作状态 连上则访问网络,否则 } //注册一个广播 public void regNetReceiver() { //动态注册广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); network = new NetWork(); registerReceiver(network, intentFilter); } //获取工作状态 public int getNetWorkStatus() { if (networkInfo != null && networkInfo.isConnected()) { int type = networkInfo.getType(); if (type == ConnectivityManager.TYPE_WIFI) { NETWORK = NETWORK_wifi; } else if (type == ConnectivityManager.TYPE_MOBILE) { NETWORK = getNetworkState(); } } return NETWORK; } //联网 public void NetWork() { OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url("https://www.baidu.com/").build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override//fail public void onFailure(Call call, IOException e) { handler.sendEmptyMessage(0); } @Override public void onResponse(Call call, Response response) throws IOException { Message msg = new Message(); msg.what = 1; msg.obj = response.body().toString();//访问网络返回的数据 handler.sendMessage(msg); } }); } class NetWork extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); telephonyManager = (TelephonyManager) context.getSystemService(Context.TELECOM_SERVICE); connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); networkInfo = connectivityManager.getActiveNetworkInfo(); switch (getNetWorkStatus()) { case 0: builder.setContentText("无网络链接"); break; case 1: case 2: case 3: case 4: NetWork(); break; default: builder.setContentText("无网络链接"); break; } } }}
如果觉得本文写得好,请点击一下方的赞
阅读全文
0 0
- 广播与okhttp联网(实现联网就访问网络的功能)
- J2ME实现联网功能
- 在联网时候小米手机收到无网络的广播
- 物联网实现的三个重要功能
- 联网,网络判断的实现方式
- OkHttp—成熟的联网工具
- Hello Bonjour!实现零配置网络联网的解决方案
- C语言实现ping功能(查看设备联网状态)
- C语言实现ping功能(查看设备联网状态)
- 【物联网】给俺的PDA加上物联网功能(RFID 读写模块)
- 破解联网c#软件实现某些功能的三种方法(待修改)
- Big SNS(大社交)的诞生,物联网与社交网络的结合
- Java实现简单的联网
- 虚拟机的安装与联网
- 弱联网与强联网
- 联网
- Android 网络操作(其中包含xUtils的HttpUtils联网)
- 弱联网与强联网之间的区别
- 170716 逆向-Smali文件信息及指令简析
- Oracle中函数的用法
- Nginx配置SSL证书部署HTTPS网站(介绍)
- nine
- 疯狂java学习笔记(四)
- 广播与okhttp联网(实现联网就访问网络的功能)
- 栈的应用:计算字符串表达式
- OJ提交题目中的语言选项里G++与C++的区别
- PL/SQL 各版本 实用的破解方法
- 每个人都心知肚明害人恒久远恶毒永留存
- Java8 Optional类
- REDIS (14) Jedis简单监控
- 基础数据结构算法_计数排序,基数排序,桶排序
- Linux vi/vim