Mam urządzenie z systemem Android podłączone do sieci Wi-Fi z adresem IP. Zrobiłem na moim komputerze z systemem Linux adres IP tego adresu IP i zweryfikowałem, że istnieje odpowiednia nazwa hosta dla tego adresu IP.Nie można odwrócić wyszukiwania DNS na urządzeniu z systemem Android
Mam kawałek kodu Java, które, gdy będzie działać na moim komputerze Windows ma wstecznego DNS grzywny (zwraca nazwę hosta):
String dnSuffix;
String ipAddress = "10.228.59.217";
InetAddress inetAddr;
try {
//inetAddr = InetAddress.getLocalHost();
inetAddr = InetAddress.getByName(ipAddress);
//System.out.println("inetAddr = " + inetAddr);
Log.v(LOG_TAG, "inetAddr = " + inetAddr);
if (inetAddr != null) {
dnSuffix = inetAddr.getHostName();
//System.out.println("dnSuffix is " + dnSuffix);
Log.v(LOG_TAG,"dnSuffix is " + dnSuffix);
}
} catch (UnknownHostException e) {
//System.out.println("Error getting DN suffix: " + e.getMessage());
Log.v(LOG_TAG,"Error getting DN suffix: " + e.getMessage());
}
dnSuffix
to nazwa hosta zgodnie z oczekiwaniami w systemie Windows.
Ale na Androidzie zwraca adres IP zamiast nazwy hosta, co oznacza, że się nie udało.
mam wszystkie uprawnienia, które myślę, że trzeba za to w moim app:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
znalazłem tę dokumentację:
getCanonicalHostName
publicznego getCanonicalHostName String()
Pobiera w pełni kwalifikowaną nazwę domeny dla tego adresu IP. Najlepszym wysiłkiem jest metoda , co oznacza, że możemy nie być w stanie zwrócić nazwy FQDN w zależności od konfiguracji systemu bazowej . Jeśli istnieje menedżer zabezpieczeń, ta metoda najpierw wywołuje metodę checkConnect z nazwą hosta, a -1 jako jej argumenty, aby sprawdzić, czy kod wywołujący może znać nazwę hosta dla tego adresu IP, tj. Aby połączyć się z hostem . Jeśli operacja jest niedozwolona, zwróci ona tekstową reprezentację adresu IP w postaci .
Powroty:
w pełni kwalifikowaną nazwę domeny dla tego adresu IP lub jeśli operacja nie jest dozwolone przez kontrolę bezpieczeństwa, reprezentacja tekstowa adresu IP.
od:
1,4
Patrz również:
SecurityManager.checkConnect (java.lang.String, int)
Znalazłem też ktoś mający podobny problem:
getCanonicalHostName returns an IP address
Ale brak rozdzielczości.
Czy ktoś może udzielić jakiejkolwiek pomocy?
ICS kod wygląda inaczej – sherpya