相关疑难解决方法(0)

WIFI开启时通过移动数据发送请求.(Android L)

SDK:Android 5.0.1.

Android版本:LRX22C.

设备:Nexus 5.

问题:KITKAT(4.4.4)及以下API

1)startUsingNetworkFeature(int networkType, String feature) 不推荐使用此方法.不赞成使用清洁剂requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback).

2)requestRouteToHost(int networkType, int hostAddress) 不推荐使用此方法.贬低赞成requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback),setProcessDefaultNetwork(Network)getSocketFactory().

用于在WIFI和移动数据打开时通过移动数据网络发送请求.

启动Android L后,API已弃用,不再有效.

新的API /类NetworkRequest.Builder,NetworkRequest,ConnectivityManager.NetworkCallback,requestNetwork,registerNetworkCallback分别使用. 详细信息这里有关于API使用
Android L API的信息

码:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkRequest.Builder builder = new NetworkRequest.Builder();

builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

NetworkRequest networkRequest = builder.build();
connectivityManager.requestNetwork(networkRequest, networkCallback);
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
Run Code Online (Sandbox Code Playgroud)

工作场景:

onAvailable接收回调上的移动数据.

不工作场景:移动和Wifi都已打开并连接,onAvailable未从系统接收回叫.因此无法设置setProcessDefaultNetwork, ConnectivityManager.setProcessDefaultNetwork(preferedNetwork);

经常:永远

预期输出:当wifi打开时获取移动网络avaliabe回调. …

networking android android-wifi android-5.0-lollipop

33
推荐指数
1
解决办法
2万
查看次数

Android O - 检测后台连接的变化

首先:我知道ConnectivityManager.CONNECTIVITY_ACTION已被弃用,我知道如何使用connectivityManager.registerNetworkCallback.如果阅读JobScheduler,但我不完全确定我是否正确.

我的问题是,当手机与网络连接/断开连接时,我想执行一些代码.这应该在应用程序也在后台时发生.从Android OI开始,如果我想在后台运行我想要避免的服务,则必须显示通知.
我尝试获取有关手机何时使用JobScheduler/JobServiceAPI 连接/断开连接的信息,但它只会在我安排它时执行.对我来说,似乎在这样的事件发生时我无法运行代码.有没有办法实现这个目标?我可能只需要稍微调整一下我的代码吗?

我的JobService:

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class ConnectivityBackgroundServiceAPI21 extends JobService {

    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        LogFactory.writeMessage(this, LOG_TAG, "Job was started");
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo();
        if (activeNetwork == null) {
            LogFactory.writeMessage(this, LOG_TAG, "No active network.");
        }else{
            // Here is some logic consuming whether the device is connected to a network (and to which type)
        }
        LogFactory.writeMessage(this, LOG_TAG, "Job is done. ");
        return …
Run Code Online (Sandbox Code Playgroud)

android android-service android-8.0-oreo

13
推荐指数
1
解决办法
8059
查看次数