android 8.0后打开wifi热点以及更改热点帐号密码,打开移动数据的方法
16lz
2021-01-25
需要权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
/** * 8.0 开启wifi热点方法 * @param apName wifi热点帐号 * @param apPassword wifi热点密码 */ public boolean setWifiAp(String apName, String apPassword) { try { //热点的配置类 WifiConfiguration apConfig = new WifiConfiguration(); //配置热点的名称(可以在名字后面加点随机数什么的) apConfig.SSID = apName; apConfig.preSharedKey = apPassword; //不设置密码 apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); //android 8.0开启wifi热点 if (Build.VERSION.SDK_INT >= 26) { Method configMethod = mWifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class); boolean isConfigured = (Boolean) configMethod.invoke(mWifiManager, apConfig); method = mWifiManager.getClass().getMethod("startSoftAp", WifiConfiguration.class); //返回热点打开状态 return (Boolean) method.invoke(mWifiManager, apConfig); } else { //通过反射调用设置热点 method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); //返回热点打开状态 return (Boolean) method.invoke(mWifiManager, apConfig, true); } } catch (NoSuchMethodException e) { e.getMessage(); return false; } catch (IllegalAccessException e) { e.printStackTrace(); return false; } catch (InvocationTargetException e) { e.printStackTrace(); return false; } } /** * 关闭wifi 热点 * @return */ public boolean closeWifiAp() { //热点的配置类 WifiConfiguration apConfig = new WifiConfiguration(); try { //android 8.0关闭wifi热点 if (Build.VERSION.SDK_INT >= 26) { method = mWifiManager.getClass().getDeclaredMethod("stopSoftAp"); return (Boolean) method.invoke(mWifiManager); } else { method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); //返回热点关闭状态 return (Boolean) method.invoke(mWifiManager, apConfig, false); } } catch (Exception e) { e.getMessage(); return false; } } /** * 打开移动网络 * @param context * @param enabled 是否打开 */ public void setMobileDataState(Context context, boolean enabled) { TelephonyManager telephonyService = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { Method setDataEnabled = telephonyService.getClass().getDeclaredMethod("setDataEnabled",boolean.class); if (null != setDataEnabled) { setDataEnabled.invoke(telephonyService, enabled); } } catch (Exception e) { e.printStackTrace(); } }
更多相关文章
- Android_UI_全屏去掉标题栏和状态栏的两种方法
- Android(安卓)管理Fragments FragmentManager浅析
- Android程序监听Home键
- android webview将网页内容导出为图片和PDF方法
- android AutoCompleteTextView 的 setAdapter方法的坑! 设置进去
- Android中图片保存到本地,并及时更新到系统相册
- Android(安卓)AndroidManifest.xml配置文件
- android PhoneGap 入门
- android PhoneGap 自定义插件