メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2012年3月28日水曜日

[Android][Wifi] Android4.0のstatic ip

androidでstatic ipを割り当てるとき、


Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_IP, IPアドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_GATEWAY,Gatewayアドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_NETMASK, ネットマスク)
Settings.System.putString(getContentResolver(),Settings.System.WIFI_STATIC_DNS1, DNS1アドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_DNS2, DNS2アドレス) Settings.System.putString(getContentResolver(), Settings.System.WIFI_USE_STATIC_IP, "1")
 

ってな感じでいいと思うんだけど、Android4.0だとダメみたい。
Android4.0以前だとstatic ipはWifiConfigurationとは別にもっていたんだけど
Android4.0から(?)WifiConfigurationに紐づく。

4.0のWifiConfiguration.javaを見ると、

public IpAssignment ipAssignment;
public ProxySettings proxySettings;
public LinkProperties linkProperties;
 

というメンバが登場。

こいつらをセットアップすれば良さそうなんだけど、documentには公開されてないっぽいし
rev16のsdkでもコンパイルできないっぽい。IpAssignmentなんて知らない!っていわれる。

いじっちゃダメというオーラを感じるもののまぁいいやということで
IpAssignmentとLinkPropertiesを知ってるクラスローダを頂戴しまして、
そのクラスローダから、IpAssignmentやらLinkPropertiesやらを
ロードして必要事項をセットしてWifiConfigurationにセットすればいいんでないかい?

ということでやってみたら無事できたんだけど
いいのかなぁ・・・

.