0
点赞
收藏
分享

微信扫一扫

【Android】实现对网络连接成功与否进行监听并弹出Dialog进行交互


需求提出

在自己之前写的demo ,发现产品用demo是没开网络误以为我的项目有问题。考虑加上一个网络监听功能。

解决之路

  • 构建一个网络监听接口:异常弹出一个dialog然后跳到wifi开启页。重点:Intent里的东西的参数,我找了好久才确定跳转的Intent内容为android.provider.Settings.ACTION_WIFI_SETTINGS

interface  NetworkListener {
        void isSucceeded();
        void isFailure();
    }
    private NetworkListener networkListener =  new NetworkListener() {
        @Override
        public void isSucceeded() {
            Toast.makeText(MainActivity.this,"网络正常!",Toast.LENGTH_SHORT).show();
        }

        @Override
        public void isFailure() {
            Builder builder = new AlertDialog.Builder(MainActivity.this);
            AlertDialog alertDialog = builder.create();
            builder.setTitle("网络异常")//设置标题
            .setMessage("请确定是否启用网络?")//提示消息
            .setIcon(R.mipmap.ic_launcher)//设置图标
            .setCancelable(true)
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                //点击确定按钮执行的事件
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    alertDialog.dismiss();
                    if(!isOnInternetConnect()){
                        // 弹到网络设置界面
                        Intent intent = null;
                        // 先判断当前系统版本
                        if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1){  // 3.0以上
                            intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);//跳转到wifi设置页面
                        }else{
                            intent = new Intent();
                            intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
                        }
                        startActivity(intent);
                    }
                }
            }).create()//创建对话框
            .show();//显示对话框
        }
    };

  • 网络状态获取

private boolean isOnInternetConnect() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        if (null != activeNetworkInfo){
           //正常有网络
            return true;
        }else{
            return false;
        }
    }

  • 在Activity的合适周期中进行调用

@Override
    protected void onStart() {
        super.onStart();
        if(isOnInternetConnect()){
            networkListener.isSucceeded();
        }else{
            networkListener.isFailure();
        }


举报

相关推荐

0 条评论