You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android后台BroadcastReceiver监听PROXY_CHANGE触发异常求助

网络代理监听异常问题排查

我需要监听网络代理的变化,在变化发生时检测网络状态,已在onReceive方法中加入日志打印。目前遇到的现象:

  • 应用处于Activity前台时,日志能正常输出;
  • 进入设置界面配置代理(应用后台)时,onReceive的日志不会触发,返回Activity后会立即触发;
  • 后续确认实际情况:后台切换网络时onReceive会触发一次,之后再切换网络就不再触发了。

已尝试使用WakeLock但没有效果,期望后台能正常执行onReceive中的代码,麻烦帮忙排查代码问题,提前感谢!

NetworkReceiver 代码

public class NetworkReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("NetworkChange", "onReceiveTest 代理接收器接收到了: " + intent.getAction());

        InternetConnectionStatusHelper internetConnectionStatusHelper = InternetConnectionStatusHelper.getInstance(context);
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        ProxyInfo proxyInfo = connectivityManager.getDefaultProxy();
        if (proxyInfo != null) {
            String host = proxyInfo.getHost();
            int port = proxyInfo.getPort();
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
            internetConnectionStatusHelper.setmProxy(proxyInfo);
            internetConnectionStatusHelper.checkConnection();
            Log.d("NetworkChange", "onReceive has: 代理");
        } else {
            internetConnectionStatusHelper.checkConnection();
            Log.d("NetworkChange", "onReceive: 无代理");
        }
    }

}

NetworkService 代码(接收器注册逻辑)

public class NetworkService extends Service {
    private final String TAG = "NetworkChange";
    BroadcastReceiver networkReceiver;
    @Override
    public void onCreate() {
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action.PROXY_CHANGE");
        networkReceiver = new NetworkReceiver();
        registerReceiver(networkReceiver, intentFilter);
        Log.d(TAG, "服务创建了");
      
        super.onCreate();
    }
}

已获取的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_VPN" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>

内容的提问来源于stack exchange,提问作者蒋文杰

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:35:31