4.1.3.9 监听网络状态,3G,WIFI,

本文介绍如何在Android应用中监听网络状态的变化,包括注册所需权限、创建BroadcastReceiver并处理CONNECTIVITY_ACTION,以及在AndroidManifest.xml中配置接收器。
注意了:android.net.conn.CONNECTIVITY_CHANGE 是用来监听网络变化的就是ConnectivityManager.CONNECTIVITY_ACTION


监听网络的状态:
1: 第一步就是注册权限,这个权限是,ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,INTERNET
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

2: 然后创建一个BroadcastReceiver,里面有一个onReceiver();

3: 在这个onReceiver里面来判断是否是这个ConnectivityManager.CONNECTIVITY_ACTION
如果是的话,就获取当前活动的连接,但是首先要获取当前的
ConnectivityManager cm = context.getSystemService(Service.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActivtNetWork();
int type = networkInfo.getType();
int state = networkInfo.getState();
switch(types){
case ConnectivityManager.TYPE_WIFI:
if(state = networkInfo.State.CONNECTED)
break;
....

}

package tech.androidstudio.connectionbroadcastreceiverdemo;

import android.annotation.TargetApi;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.util.Log;

/**
 * Created by Kodulf on 2016/2/29.
 */
public class ConnectionBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("NetworkReceiver", "收到广播消息" +intent );
        String action = intent.getAction();
        if(ConnectivityManager.CONNECTIVITY_ACTION.equals(action)){
            ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Service.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            if(activeNetwork!=null){
                int subtype = activeNetwork.getSubtype();
                NetworkInfo.State state = activeNetwork.getState();
                int type = activeNetwork.getType();
                switch (type){
                    case ConnectivityManager.TYPE_WIFI:
                        if(state==NetworkInfo.State.CONNECTED){
                            Log.d("Kodulf","WIFI Connected++++++++++++++++");
                        }else{
                            Log.d("Kodulf","WIFI DisConnected+++++++++++++++++++");
                        }
                        break;
                    case ConnectivityManager.TYPE_MOBILE:
                        if(state==NetworkInfo.State.CONNECTED){
                            Log.d("Kodulf","Mobile Connected+++++++++++++++++++");
                        }else{
                            Log.d("Kodulf","Mobile DisConnected+++++++++++++++++++");
                        }
                        break;
                    case ConnectivityManager.TYPE_BLUETOOTH:
                        if(state==NetworkInfo.State.CONNECTED){
                            Log.d("Kodulf","BLUETOOTH Connected+++++++++++++++++++");
                        }else{
                            Log.d("Kodulf","BLUETOOTH DisConnected+++++++++++++++++++");
                        }
                        break;
                }
            }

        }
    }
}


4:然后在清单文件中添加recevier,这个有一个优先级为1000

<receiver android:name=".ConnectionBroadcastReceiver">
    <intent-filter android:priority="1000">
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
    </intent-filter>
</receiver>





在 DrissionPage 4.1.0.18 中,可以通过监听页面资源加载行为来捕获 Document 类型的数据。该版本支持对页面请求和响应的监听,适用于捕获网页中加载的 PDF、DOCX、XLSX 等文档资源。通过设置响应监听器,可以判断响应内容是否为文档类型,并读取其二进制数据[^1]。 ### 使用资源监听捕获文档类型数据 DrissionPage 提供了 `ChromiumPage` 类,允许监听网络请求和响应事件。通过注册 `on.response` 事件,可以拦截页面加载过程中产生的文档资源请求,并根据响应内容进行保存或处理: ```python from DrissionPage import ChromiumPage # 定义响应事件处理函数 def on_response(url, response): if url.endswith(&#39;.pdf&#39;) or url.endswith(&#39;.docx&#39;) or url.endswith(&#39;.xlsx&#39;): print(f"捕获到文档资源: {url}") with open(f"./downloads/{os.path.basename(url)}", &#39;wb&#39;) as f: f.write(response.content) print(f"文档已保存,大小: {len(response.content)} 字节") # 创建浏览器实例 page = ChromiumPage() # 设置响应监听器 page.listen.on(&#39;response&#39;, on_response) # 创建下载目录 os.makedirs(&#39;./downloads&#39;, exist_ok=True) # 打开目标网页 page.get(&#39;https://example.com/document-viewer&#39;) ``` 此方式适用于文档资源通过 HTTP 请求加载的情况,能够有效捕获网页中加载的 Document 类型数据[^1]。 ### 处理动态加载的文档内容 如果文档内容是通过 JavaScript 动态渲染(如 PDF.js 或 Office Online),则文档可能不会直接通过 HTTP 请求获取,而是以 Base64 编码的形式嵌入在页面中。此时可以通过执行 JavaScript 代码提取文档内容,并进行解码和保存: ```python # 假设文档内容嵌入在 DOM 中 doc_data = page.run_js(&#39;return document.getElementById("docViewer").content;&#39;) binary_data = base64.b64decode(doc_data) with open(&#39;./downloads/document.pdf&#39;, &#39;wb&#39;) as f: f.write(binary_data) ``` 该方法适用于文档内容通过 JavaScript 动态加载并嵌入在页面 DOM 中的情况,需根据实际网页结构进行适配[^2]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值