1

こんにちは、アプリからアクセス ポイントを作成しようとしています。AP を立てることはできますが、設定した構成ではできません。htc Sensation XE を使用しています。

WifiManager wifiManager = (WifiManager) rc.getSystemService(Context.WIFI_SERVICE);

if(wifiManager.isWifiEnabled())
{
    wifiManager.setWifiEnabled(false); 
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods();
boolean methodFound=false;

WifiConfiguration netConfig = new WifiConfiguration();

netConfig.SSID = "MyWifiAP";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){                   
  methodFound=true;
  try {
  boolean apstatus=(Boolean) method.invoke(wifiManager, netConfig,true);
  for (Method isWifiApEnabledmethod: wmMethods){
        if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){
           while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){
           };
           for(Method method1: wmMethods){
              if(method1.getName().equals("getWifiApState")){
                int apstate;
                apstate=(Integer)method1.invoke(wifiManager);
                for(Method method2: wmMethods){
                   if(method2.getName().equals("getWifiApConfiguration")){
                      try {
                         netConfig=(WifiConfiguration)method2.invoke(wifiManager);
                      } catch (IllegalArgumentException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } catch (IllegalAccessException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      } catch (InvocationTargetException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }
                      Log.e("CLIENT", "\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n");                                          

                      if (apstate==0) {
                          Log.d("basura", "apstate es: "+apstate);
                      }
                   }
                }   
              }   
           }   
        } catch (IllegalArgumentException e) {
           e.printStackTrace();
        } catch (IllegalAccessException e) {
           e.printStackTrace();
        } catch (InvocationTargetException e) {
           e.printStackTrace();
        }
    }      
}

印刷するとき:

Log.e("CLIENT", "\nSSID:"+netConfig.SSID+"\nパスワード:"+netConfig.preSharedKey+"\n");

私は得る:

nSSID:null nPassword:null

4

1 に答える 1

2

HTCDesireとAndroid2.2.2でも同じ問題が発生します。多くの(またはすべての)HTCデバイスをこのように構成できないようです。HTCはおそらくコードの一部を書き直し、隠された機能の一部を制限しています。リフレクションを通じてAPIに公式に含まれていないメソッド(例:setWifiApEnabled)を使用しています。私の場合、ホットスポットが作成されますが、デフォルトの構成になっています。おそらくあなたは同じ問題を抱えています。それは考えられている他のいくつかのデバイスで動作します

于 2012-11-29T10:34:31.637 に答える