如何以编程方式关闭4G /数据?

时间:2018-10-17 08:07:40

标签: java android 4g

如何在Android 8.0中以编程方式关闭4G /数据?

不是Wifi上网,而是4G /数据。

运行以下源将关闭设备。

public void onClick(View view){
        ConnectivityManager dataManager;
        dataManager  = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        Method dataMtd = null;
        try {
            dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        dataMtd.setAccessible(true);
        try {
            dataMtd.invoke(dataManager, true);
        } 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();
        }
    }

3 个答案:

答案 0 :(得分:0)

实际上,由于Android 5.0 Lollipop,您无法再启用或禁用4G /电话数据。 无论如何,对于以前的版本,仅在有根设备this solution 上有效。

要禁用WiFi,此代码应起作用:

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);

第二个位置的“状态”应为true / false。

答案 1 :(得分:0)

您需要启动设备,使用TelephonyManager代替ConnectivityManager,并添加MODIFY_PHONE_STATE的权限。

答案 2 :(得分:0)

以下代码在Kotlin上对我有用:

fun disable4GNetwork(context: Context) {
val connectivityManager =
    context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val request: NetworkRequest.Builder?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    request = NetworkRequest.Builder()

    request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
    connectivityManager.requestNetwork(
        request.build(),
        object : ConnectivityManager.NetworkCallback() {

            override fun onAvailable(network: Network) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    ConnectivityManager.setProcessDefaultNetwork(network)
                }
            }
        }
    )
}

}