如何在MAUI应用中使用C#设置Android系统代理
在MAUI Android中设置系统代理的正确方法
你之前用Java.Lang.JavaSystem.SetProperty设置代理的方式,仅能对当前应用内使用Java网络栈的请求生效,并非真正的系统级代理,所以达不到预期效果。以下是不同Android版本下设置系统代理的可行方案:
Android 9(API 28)及以下版本
可以通过ConnectivityManager直接设置全局代理:
1. 添加必要权限
在Android项目的AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
2. 请求WRITE_SETTINGS权限(需用户手动授权)
WRITE_SETTINGS属于特殊权限,必须引导用户到系统设置页面开启:
using Android.Content; using Android.App; using Android.Provider; if (!Settings.System.CanWrite(Application.Context)) { var intent = new Intent(Settings.ActionManageWriteSettings); intent.SetData(Android.Net.Uri.Parse($"package:{Application.Context.PackageName}")); intent.AddFlags(ActivityFlags.NewTask); Application.Context.StartActivity(intent); }
3. 设置代理代码
using Android.Net; using Android.Content; var connectivityManager = (ConnectivityManager)Application.Context.GetSystemService(Context.ConnectivityService); var proxyProps = new ProxyProperties("127.0.0.1", 8080, null); connectivityManager.SetGlobalProxy(proxyProps);
Android 10(API 29)及以上版本
从Android 10开始,系统限制了普通应用直接修改全局代理的权限,分两种场景处理:
场景1:企业应用(拥有设备管理员权限)
如果你的应用是企业管理类应用,可以通过DevicePolicyManager设置代理:
using Android.App.Admin; using Android.Content; var devicePolicyManager = (DevicePolicyManager)Application.Context.GetSystemService(Context.DevicePolicyService); var adminComponent = new ComponentName(Application.Context, typeof(YourDeviceAdminReceiver)); // 需自定义DeviceAdminReceiver子类 if (devicePolicyManager.IsAdminActive(adminComponent)) { var proxyInfo = ProxyInfo.BuildDirectProxy("127.0.0.1", 8080); devicePolicyManager.SetGlobalProxy(adminComponent, proxyInfo); }
注意:此方式需要应用先成为设备管理员,用户需手动确认激活。
场景2:普通应用
普通应用无法通过代码直接设置系统代理,只能引导用户前往系统设置页面手动配置:
using Android.Content; using Android.App; using Android.Provider; var intent = new Intent(Settings.ActionProxySettings); intent.AddFlags(ActivityFlags.NewTask); Application.Context.StartActivity(intent);
内容的提问来源于stack exchange,提问作者Arnold Zahrneinder
相关产品推荐
相关产品推荐

