前言
网络相关工具库方法
功能
1、打开热点
代码如下(示例):
/**
* 打开WiFi热点
* @param context
*/
public static void startTethering(Context context) {
//1、环境属性记录
String property = System.getProperty("dexmaker.dexcache");
//2、设置新的属性
System.setProperty("dexmaker.dexcache", context.getCacheDir().getPath());
//3、反射操作打开热点
ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
try {
Class classOnStartTetheringCallback = Class.forName("android.net.ConnectivityManager$OnStartTetheringCallback");
Method startTethering = connectivityManager.getClass().getDeclaredMethod("startTethering", int.class, boolean.class, classOnStartTetheringCallback);
Object proxy = ProxyBuilder.forClass(classOnStartTetheringCallback).handler(new InvocationHandler() {
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
return null;
}
}).build();
startTethering.invoke(connectivityManager, 0, false, proxy);
} catch (Exception e) {
e.printStackTrace();
}
//4、恢复环境属性
if (property != null) {
System.setProperty("dexmaker.dexcache", property);
}
}
2、关闭热点
/**
* 关闭热点
* @param context
*/
public static void stopTethering(Context context) {
//1、环境属性记录
String property = System.getProperty("dexmaker.dexcache");
//2、设置新的属性
System.setProperty("dexmaker.dexcache", context.getCacheDir().getPath());
ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
try {
Method stopTethering = connectivityManager.getClass().getDeclaredMethod("stopTethering", int.class);
stopTethering.invoke(connectivityManager, 0);
} catch (Exception e) {
e.printStackTrace();
}
//3、恢复环境属性
if (property != null) {
System.setProperty("dexmaker.dexcache", property);
}
}
总结
1、系统应用
2、相应权限在运行时配置
3、系统属性,应用运行时,如果出现以下错误,需要新增
System.err: java.lang.IllegalArgumentException: dexcache == null (and no default could be found; consider setting the 'dexmaker.dexcache' system property)
System.err: at com.android.dx.DexMaker.generateAndLoad(DexMaker.java:424)
System.err: at com.android.dx.stock.ProxyBuilder.buildProxyClass(ProxyBuilder.java:304)
System.err: at com.android.dx.stock.ProxyBuilder.build(ProxyBuilder.java:225)