Как установить DNS1 и DNS2 в Android Программно и как проверить, установлен DNS или нет? - PullRequest
0 голосов
/ 22 января 2020

Я пробую некоторые коды для 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.

Спасибо

1 Ответ

0 голосов
/ 22 января 2020

Вам необходимо запросить разрешение 'WRITE_SETTINGS' в вашем 'AndroidManifest. xml':

<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);
...