Wifiホットスポットを作成するためにAndroid 2.2(Froyo)で行う必要のあるAPI呼び出しは何ですか(テザリングとポータブルホットスポットの設定項目に表示されます)。
あなたは呼び出すことができます
private boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled);
リフレクションを使用する:)
WifiManager
を取得した後、リフレクションを使用してWifiManager
宣言されたメソッドを取得し、このメソッド名setWifiApEnabled
を探し、WifiManager
オブジェクトを介して呼び出します
これらのAPIは@hideとしてマークされているため、現在直接使用することはできませんが、WifiManagerのAIDLに表示されるため、アクセスできます。
例は次のとおりです。
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method[] wmMethods = wifi.getClass().getDeclaredMethods();
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "\"PROVAAP\"";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
try {
method.invoke(wifi, netConfig,true);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
動作しますが、現在の構成を自分で変更できず、アクティブなAPの現在のWifiConfigurationを取得すると、空の構成になります。なぜですか。
これはAPI8以降で機能します。私はこれより下(または上)とは大きく異なるバージョンを使用しており、markov00が遭遇したのと同じ問題に遭遇していました。ポータブルWi-FiAPのデフォルトのWifiConfigurationをロードできません。私は他の場所で解決策を見つけました。
あなたが解決策が好きなら、これが答えとして受け入れられればいいでしょう
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Method[] wmMethods = wifi.getClass().getDeclaredMethods();
for (Method method: wmMethods){
if (method.getName().equals("setWifiApEnabled")){
try {
// just nullify WifiConfiguration to load the default configuration ;)
method.invoke(wifi, null, true);
} catch (IllegalArgumentException e){
e.printStackTrace();
} catch (IllegalAccessException e){
e.printStackTrace();
} catch (InvocationTargetException e){
e.printStackTrace();
}
}
}
WiFiホットスポットを作成するためのAPI呼び出しがないようです-申し訳ありません!