如何以编程方式创建访问点

我已经编写了代码来为Android设备创建一个访问点。 我已经在模拟器和真实设备上进行了测试。但它不起作用。 我哪里弄错了?

public class MainWAP extends Activity { WifiManager wifiManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_wap); } public void openWifi(View v) { createWifiAccessPoint(); } private void createWifiAccessPoint() { if (wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(false); } Method[] wmMethods = wifiManager.getClass().getDeclaredMethods(); boolean methodFound = false; for (Method method: wmMethods) { if (method.getName().equals("setWifiApEnabled")) { methodFound = true; WifiConfiguration netConfig = new WifiConfiguration(); netConfig.SSID = "AccessPoint"; netConfig.allowedAuthAlgorithms.set( WifiConfiguration.AuthAlgorithm.OPEN); 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); } } } } if (apstatus) { Log.d("Splash Activity", "Access Point created"); } else { Log.d("Splash Activity", "Access Point creation failed"); } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } if (!methodFound) { Log.d("Splash Activity", "cannot configure an access point"); } } } 

您的WiFiManager肯定没有初始化。

在你的onCreate方法中添加:

 wifiManager = (WiFiManager) getSystemService(Context.WIFI_SERVICE); 

您需要很少的东西才能使这些代码正常工作。

1)初始化wifiManager onCreate()

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

2)您需要在AndroidManifest.xml请求此权限:

    

3)您的应用程序需要使用系统证书进行签名。

使用reflection来利用未记录的API的方法,在所有情况下都可能无法正常工作。 好吧,您可以尝试在清单文件中添加这些并尝试一下。

 android.permission.ACCESS_WIFI_STATE android.permission.CHANGE_WIFI_STATE android.permission.WRITE_APN_SETTINGS