android中实现禁掉有线网络

 1.首先初始化mINetworkManagementServiceProxy 

// INetworkManagementService mNwService;
Object mINetworkManagementServiceProxy;
 
public void init() {
    // IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
    // mNwService = INetworkManagementService.Stub.asInterface(b);
    try {
        Class<?> smClass = Class.forName("android.os.ServiceManager");
        Method getService = smClass.getMethod("getService", new Class[]{String.class});
        getService.setAccessible(true);
        IBinder networkManagementBinder = (IBinder) getService.invoke(null, new Object[]{"network_management"});
 
        Class<?> iNMSClass = Class.forName("android.os.INetworkManagementService$Stub");
        Method asInterface = iNMSClass.getMethod("asInterface", new Class[]{IBinder.class});
        asInterface.setAccessible(true);
        mINetworkManagementServiceProxy = asInterface.invoke(null, new Object[]{networkManagementBinder});
        Log.d("Debug", "init: mINetworkManagementServiceProxy = " + mINetworkManagementServiceProxy);
    } catch (Throwable e) {
        Log.d("Debug", "init: get INetworkManagementServiceProxy failed !!! ");
    }
}

 2.初始化完成后,打开关闭eth0

//打开有线网
private void openEth0() {
    try {
        Method setInterfaceUp = mINetworkManagementServiceProxy.getClass().getMethod("setInterfaceUp", new Class[]{String.class});
        setInterfaceUp.setAccessible(true);
        setInterfaceUp.invoke(mINetworkManagementServiceProxy, "eth0");
    } catch (Throwable e) {
        Log.d("Debug", "openEth0: failed !!! ");
    }
}
 
//禁用有线网
private void closeEth0() {
    try {
        Method setInterfaceDown = mINetworkManagementServiceProxy.getClass().getMethod("setInterfaceDown", new Class[]{String.class});
        setInterfaceDown.setAccessible(true);
        setInterfaceDown.invoke(mINetworkManagementServiceProxy, "eth0");
    } catch (Throwable e) {
        Log.d("Debug", "closeEth0: failed !!! ");
    }
}

如果报错,抛出安全异常的话,需要添加权限:(我没有添加也是可以的)

<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<uses-permission android:name="android.permission.NETWORK_STACK" />
<uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK" />

可能只有system app可以使用,但不确定,待验证!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值