【Android】为App所在的进程指定网络

本文介绍如何在Android设备上为App指定网络进程,以解决在同时连接有线和无线网络时,默认不走有线网络的问题。通过调整TransportType和Capability,可以实现数据通过特定网络接口传输。
摘要由CSDN通过智能技术生成

最近开发一个项目,要求一个安卓设备同时接入两个无线网络。如果直接使用两块无线网卡,在驱动和应用层以及安卓框架中都会遇到问题,因此,选择了一款同时具备有线网卡和无线网卡的安卓开发板,然后再使用一块OpenWrt核心板将有线网络转换成无线网络,并实现透传。开发App的时候,发现安卓会为App选择一个默认优先级最高的网络,因此同时连接有线和无线时,应用的数据默认不走有线网口,下面介绍一种解决方案。

代码

if (Build.VERSION.SDK_INT >= 21) {   
    final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);   
NetworkRequest.Builder builder = new NetworkRequest.Builder();   

// 设置指定的网络传输类型(蜂窝传输) 等于手机网络
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);   

// 设置感兴趣的网络功能   
// builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);   

// 设置感兴趣的网络:计费网络   
// builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);   

NetworkRequest request = builder.build();  
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
    /**
     * Called when the framework connects and has declared a new network ready for use.       
     * This callback may be called more than once if the {@link Network} that is       
     * satisfying the request changes.       
     * 
     */      
    @TargetApi(Build.VERSION_CODES.M)     
    @Override      
    public void onAvailable
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值