본문 바로가기

개발

How to get the DNS Information

Android 8 버전부터는 android.os.SystemProperties를 사용하여 DNS 서버를 얻지 못한다.

 

https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=ko

 

Android 8.0 동작 변경 사항  |  Android 개발자  |  Android Developers

System and API behavior changes that can affect apps running on Android 8.0.

developer.android.com

 

또한 Android 9 버전 부터는 시스템권한이 없는 앱에서 Hidden API를 reflection을 이용한 방법도 지양하고 있어 가능하면 오픈 API를 통하여 얻는 것을 권장한다.

아래는 Hidden API가 아닌 방법으로 DNS 서버 주소를 얻는 방법이다.

 

    ConnectivityManager connectivityManager =
    	(ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    
    for (Network network : connectivityManager.getAllNetworks()) {
        NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
        
        if (networkInfo.isConnected()) {
            LinkProperties linkProperties = connectivityManager.getLinkProperties(network);
            Log.d("DnsInfo", "iface = " + linkProperties.getInterfaceName());
            Log.d("DnsInfo", "dns = " + linkProperties.getDnsServers());
            return linkProperties.getDnsServers();
        }
    }

 

출처 :

https://stackoverflow.com/questions/3070144/how-do-you-get-the-current-dns-servers-for-android

 

How do you get the current DNS servers for Android?

I'm trying to get hold of the addresses to the currently used DNS servers in my application, either I'm connected thru Wifi or mobile. The DhcpInfo object should provide this but how can I get hold...

stackoverflow.com

 

'개발' 카테고리의 다른 글

Android TV - Screen Saver Intent  (0) 2020.09.08
Android 11: Developer Preview 3  (0) 2020.05.06
Check whether the IP is in private range  (0) 2020.04.01
CAS Descramble Sequence  (0) 2020.03.23
Unifying Background Task Scheduling on Android  (0) 2020.03.23