2010-08-08 7 views
7

मैं अपने आवेदन से एंड्रॉइड 2.2 में अंतर्निहित टेदरिंग कैसे शुरू या बंद कर सकता हूं?कोड से निर्मित वाई-फाई/यूएसबी टेदरिंग शुरू/बंद करें?

+0

के संभावित डुप्लिकेट [एंड्रॉयड 2.2 वाईफ़ाई हॉटस्पॉट एपीआई] (http://stackoverflow.com/questions/3023226/android-2-2-wifi-hotspot-api) –

उत्तर

0

वहाँ टेदरिंग के प्रबंधन के लिए Android SDK में कोई सार्वजनिक API हैं - खेद है!

3

मैं इस सवाल here जवाब दे दिया। संक्षेप में, यह संभव है, यहाँ कोड है:

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

+0

यह ठीक काम करता है .. धन्यवाद –

+0

लेकिन यह जांचने के लिए कि क्लाइंट डिवाइस से कनेक्ट है या नहीं? –

+0

मैं यह भी जानना चाहता हूं। और टेदरिंग अक्षम करने के लिए, क्या आप 'setWifiApDisabled' विधि को कॉल करेंगे? या आप 'method.invoke (wifiManager, null, अक्षम) का उपयोग कर सकते हैं;'? – SubliemeSiem

7

वहाँ एक गैर है ConnectivityManager में सार्वजनिक टिथरिंग एपीआई। जैसा ऊपर दिखाया गया है आप इसे एक्सेस करने के लिए प्रतिबिंब का उपयोग कर सकते हैं। मैंने इसे कई एंड्रॉइड 2.2 फोन पर करने की कोशिश की, और यह उन सभी पर काम करता है (मेरा एचटीसी टेदरिंग पर बदल जाता है लेकिन स्टेटस बार में यह नहीं दिखाता है ..., तो दूसरे छोर से जांचें)। नीचे कुछ मोटा कोड है जो डीबगिंग सामग्री को उत्सर्जित करता है और यूएसबी 0 पर टेदरिंग पर बदल जाता है।

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 
0

मैं Android How to turn on hotspot in Android Programmatically से कोड का इस्तेमाल किया! और मैं एंड्रॉइड 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(); 
} 
संबंधित मुद्दे