天天看點

8.0之後關閉個人熱點功能實作

在開發之中我們可能需要實作關閉個人熱點的功能 ,下面的代碼是原來項目中的一個功能,但是在高版本的android中不起作用,查找了資料之後将我關閉個人熱點的方法分享給大家,下面的代碼大家可以直接複制使用,但是記得申請相關的權限哦(如果不知道申請那些可以看一下warn日志一般都會有提示的).想了解更多之前低版本的android是如何關閉個人熱點的大家可以google一下,網上也有很多解決方案

/**
 * 8.0 之後用于關閉個人熱點,需要申請下面的權限
 * <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
 * */
   @TargetApi(Build.VERSION_CODES.M)
    public void stopHotPoint(Context context) {
        try {
            ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(ConnectivityManager.class);
            Method method = manager.getClass().getDeclaredMethod("stopTethering", int.class);
            if (method == null) {

            } else {
                method.invoke(manager, 0);
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }
    }

public void closeWifiAp(Context context) {
    try {
        WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        Method method2 = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
        method2.invoke(mWifiManager, null, false);
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }
    stopHotPoint(context);
}