У меня есть Android-устройство (OS_VERSION 4.0). Я хотел бы поделиться файлами с другим устройством Android через Wi-Fi-сети. Я знаю, это можно сделать через wifi p2p (WifiDirect) в android 4.0 выше. Но это невозможно в устройствах Android 2.3.3 (до Android 4.0). Я обнаружил, что приложение Superbeam использует общий доступ к файлам через общие сети в android 2.3.3. Это приложение создает Wi-Fi-модем, не разделяя интернет-соединение устройства. Созданный модем используется только для обмена файлами, не предназначенными для совместного использования Интернета. Как достичь этой концепции. Может кто-нибудь мне помочь?Как создать Wi-Fi-модем без совместного доступа к Интернету (Hotspot) в Android?
2
A
ответ
1
Этот ответ может помочь кому-то с тем же вопросом. Простая логика я реализована в том,
1.Create WiFi привязывать (Hotspot)
2. Отключите соединение мобильной передачи данных
Кодекс,
//To enable the wifi hotspot
setWifiTetheringEnabled(true);
//To disable the mobile data cnnection
setMobileDataEnabled(false);
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;
}
}
}
private void setMobileDataEnabled(Context context, boolean enabled) {
try {
final ConnectivityManager conman = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class
.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass
.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField
.get(conman);
final Class iConnectivityManagerClass = Class
.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass
.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
} catch (ClassNotFoundException | NoSuchFieldException
| IllegalAccessException | IllegalArgumentException
| NoSuchMethodException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}