从代码开始/停止内置的Wi-Fi / USB共享?

如何从我的应用程序启动或停止Android 2.2的内置共享?

Solutions Collecting From Web of "从代码开始/停止内置的Wi-Fi / USB共享?"

ConnectivityManager有一个非公开的Tethering API。 如上所示,您可以使用reflection来访问它。 我在一些Android 2.2手机上试了这个,它可以在所有的手机上运行(我的HTC开启了绑定function,但是没有在状态栏中显示出来,所以请从另一端进行检查)。 下面是一些粗略的代码,它会发出debugging的东西,并打开usb0的绑定。

 ConnectivityManager cman = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); Method[] methods = cman.getClass().getDeclaredMethods(); for (Method method : methods) { if (method.getName().equals("getTetherableIfaces")) { try { String[] ifaces = (String[]) method.invoke(cman); for (String iface : ifaces) { Log.d("TETHER", "Tether available on " + iface); } } catch (Exception e) { e.printStackTrace(); } } if (method.getName().equals("isTetheringSupported")) { try { boolean supported = (Boolean) method.invoke(cman); Log.d("TETHER", "Tether is supported: " + (supported ? "yes" : "no")); } catch (Exception e) { e.printStackTrace(); } } if (method.getName().equals("tether")) { Log.d("TETHER", "Starting tether usb0"); try { int result = (Integer) method.invoke(cman, "usb0"); Log.d("TETHER", "Tether usb0 result: " + result); } catch (Exception e) { e.printStackTrace(); } } } 

请注意:此代码需要以下权限才能工作:

 android.permission.ACCESS_NETWORK_STATE android.permission.CHANGE_NETWORK_STATE 

我在这里回答了这个问题。 总之,这是可能的 ,这里是代码:

 private void setWifiTetheringEnabled(boolean enable) { WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); Method[] methods = wifiManager.getClass().getDeclaredMethods(); for (Method method : methods) { if (method.getName().equals("setWifiApEnabled")) { try { method.invoke(wifiManager, null, enable); } catch (Exception ex) { } break; } } } 

您的应用程序应具有以下权限:

android.permission.CHANGE_WIFI_STATE

Android SDK中没有用于pipe理绑定的公共API – 对不起!

我使用Android的代码如何打开Android中的热点编程 ! 并启用Android 4.2的便携式热点。 这是代码。

 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // TODO Auto-generated method stub WifiConfiguration wifi_configuration = null; wifiManager.setWifiEnabled(false); try { //USE REFLECTION TO GET METHOD "SetWifiAPEnabled" Method method=wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method.invoke(wifiManager, wifi_configuration, true); } catch (NoSuchMethodException e){ // TODO Auto-generated catch block e.printStackTrace(); }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(); }