android - 如何以编程方式在 Android 中设置 DNS1 和 DNS2 以及如何检查 DNS 是否设置?
问题描述
我尝试了一些 DNS 代码
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "1");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1, "8.8.4.4");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS2, "8.8.8.8");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY, "192.168.0.1");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_NETMASK, "255.255.255.0");
android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_IP, "192.168.1.51");
但是这段代码不起作用。
如果此代码有效,那么我检查 DNS 是否已设置。
任何人都请帮助我如何处理DNS。
谢谢
解决方案
您需要在“AndroidManifest.xml”中请求“WRITE_SETTINGS”权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
检查用户权限,如果它授予您可以更改设置:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Settings.System.canWrite(this)) {
android.provider.Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_DNS1, "8.8.8.8");
}
else {
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + this.getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
您可以阅读您设置的内容,如下所示:
String dns1 = Settings.System.getString(getContentResolver(), Settings.System.WIFI_STATIC_DNS1);
推荐阅读
- c++ - 代码在第 51 个输入时失败,测试用例 2。可能是什么问题?
- angular - 摆脱 Angular 中的循环依赖
- python - python中`__slots__`的静态类型
- ios - 在 UITableView 的不同部分显示不同的行
- java - 在子存储库 findAll() 方法中返回父类型列表导致编译错误
- node.js - 如何在 Swift 中使用 body 发布/获取
- swiftui - 如何显示 WKWebView 网址?
- electron - 使用 Xlaunch 在 wsl2 中启动时,Electronjs 应用程序图标很大?
- javascript - 如何在 vue 2 js 项目上设置 trumbowyg
- android-source - 使用谷歌的回购工具