私はAndroidデバイスをIPアドレスでWifiネットワークに接続しています。このIPアドレスのLinuxコンピュータでNSルックアップを行い、そのIPアドレスに対応するホスト名があることを確認しました。Androidで逆DNSルックアップを実行できません
私は私のWindows PCは、(ホスト名を返します)DNSの逆引き参照の罰金を行う上で実行するJavaコードの断片がありますWindows上で予想通り
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
はホスト名です。
しかし、Androidでは、ホスト名ではなくIPアドレスが返され、失敗したことを示します。
私は私が私のアプリでは、このために必要だと思うだろうすべての権限を持っている:
<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" />
私は、この文書が見つかりました:
getCanonicalHostName
パブリック文字列getCanonicalHostName()
このIPアドレスの完全修飾ドメイン名を取得します。ベストエフォート メソッドです。つまり、基本的なシステム構成の に応じて、FQDNを返すことができない場合があります。セキュリティーマネージャーが存在する場合、この メソッドはまず、hostnameでcheckConnectメソッドを呼び出し、 という引数を呼び出して、呼び出し側コードがこのIPアドレスの ホスト名を知ることが許可されているかどうかを確認します。 。 操作が許可されていない場合は、 のIPアドレスのテキスト表現が返されます。
戻り値:
このIPアドレスの完全修飾ドメイン名、または 操作がセキュリティチェック、IPアドレスのテキスト 表現によって許可されていない場合。
以来:
1.4
関連項目:
SecurityManager.checkConnect(java.lang.Stringで、int型)
私も同様の問題を持つ人を見つけ:
getCanonicalHostName returns an IP address
しかし解決はありません。
誰でもヘルプを提供できますか?
ICSコードが異なって見えています – sherpya