BroadcastReceiver广播监听

本文介绍了一个使用自定义BroadcastReceiver监听网络状态变化的示例,并在有网络时通过GET请求从远程服务器获取JSON数据,然后解析并处理这些数据。文章详细展示了如何在Android应用中实现网络状态监听和JSON数据的获取与解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//    动态监听广播
    private class MyBroadcastReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        boolean netWorkConnect = NetWorkUtils.isNetWorkConnect(context);

        if (netWorkConnect){

            Toast.makeText(context, "有网", Toast.LENGTH_SHORT).show();
            getJsonData();
        }else{

            Toast.makeText(context, "没网", Toast.LENGTH_SHORT).show();
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setIcon(R.drawable.ic_launcher_background);
            builder.setTitle("提示");
            builder.setMessage("请检查网络连接");
//            确定
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

//                    跳转到网络设置界面
                    startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
                }
            });

//            取消
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });

//            显示
            builder.show();
        }
    }

//    Json解析
    private void getJsonData() {

        new Thread(new Runnable() {
            @Override
            public void run() {

//                int page = 1;
                String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1\n";
//                创建URL
                try {
                    URL url = new URL(path);
//                    Httpurl获取
                   HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//                   设置获取样式
                   connection.setRequestMethod("GET");
//                    设置延迟时间
//                 connection.setConnectTimeout(5000);
//                   设置编码
                    int code = connection.getResponseCode();
//                    判断是否成功
                    if (code == 200){
//                        输入流
                        InputStream stream = connection.getInputStream();
//                        输入流转输出流
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();

                        byte [] buffer = new byte[1024];
                        int len = 0;
                        while ((len = stream.read(buffer)) != -1){

                            bos.write(buffer,0,len);
                        }
//                        关流
                        stream.close();
                        bos.close();
//                        预备发送消息、
                        String json = bos.toString();
//                        消息
                        Message message = new Message();
                        message.what = 0;
                        message.obj = json;

//                        发送消息
                        handler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值