アプリケーションに次のコードを使用したいと考えています。
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
return -1;
}
私がテストしたほとんどのデバイスで問題なく動作しますが、Nexus S Europe と Huawei デバイスでは例外がスローされます。
192.168.010.200 のルートを確立できません: 未知のホスト
Application クラスで次のコードを使用して修正しようとしましたが、成功しませんでした。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
AsyncTask も使用しようとしましたが、同じエラーが発生しました。使用したコードは次のとおりです。
private int mInetAddr = -1;
private boolean mInetAck = false; // Acknowledgement
private class AsyncInetAddress extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... hostname)
{
InetAddress inetAddress;
try
{
inetAddress = InetAddress.getByName(hostname[0]);
}
catch (UnknownHostException e)
{
mInetAddr = -1;
return null;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
| ((addrBytes[2] & 0xff) << 16)
| ((addrBytes[1] & 0xff) << 8)
| (addrBytes[0] & 0xff);
mInetAddr = addr;
return null;
}
@Override
protected void onPostExecute(Void result)
{
mInetAck = true; // Acknowledgement
}
}
どうすればそれを修正できるかについて何か考えがありますか?
ありがとう。
編集: 他のいくつかのデバイスで試してみましたが、問題はバージョン 4.0.* にのみ存在するようです。2.* 、 3.* 、および 4.1+ でうまく機能します。
問題はその行にあります。
if (!connMgr.requestRouteToHost(2, inetAddr))
どこでinetAddr = -938825536
。最初のパラメータは MMS タイプです。この条件は、4.0.3 または 4.0.4 を実行しているデバイスでは常に true です。