在Android P中,我们可以在系统/设备设置中设置私有DNS。
“我的服务”当前使用VPN,因此我必须遵守“私人DNS”设置。
私有DNS更改时如何获得通知?
在建立连接(使用我自己的DNS)之前,我已经在检查设置,但是一旦我的VPN启动并运行,我想对用户更改其私有DNS设置做出反应,但是我找不到记录任何地方。
更改后不会通知我现有的连接操作接收器
registerReceiver(connectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
答案 0 :(得分:0)
遵循源代码JavaDoc中的注释,我设法找到了可行的解决方案
ConnectivityManager cMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cMgr != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
cMgr.registerNetworkCallback(new NetworkRequest.Builder().build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
super.onLinkPropertiesChanged(network, linkProperties);
L.d(TAG, "onLinkPropertiesChanged(Network = " + network + ", LinkProperties = " + linkProperties + ")");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
L.i(TAG, "LinkProperties.isPrivateDnsActive = " + linkProperties.isPrivateDnsActive() + ", server =" + linkProperties.getPrivateDnsServerName());
}
}
});
}