2

用作 Android 4.0 及更高版本已弃用的getActiveNetworkInfo()替代方法ConnectivityManager.getBackgroundDataSetting() 在更改(受限)时不支持后台数据设置。还有其他选择吗?

这是代码片段:

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

    if(connectivityManager != null) { 
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();
        if (info.isConnected() == true) {
            System.out.println("running");
            Toast.makeText(context, "Background settings enabled", Toast.LENGTH_SHORT).show();

        } else {
            System.out.println("active network info null"); 
            System.out.println("enable background services");
            Toast.makeText(context, "background settings disabled", Toast.LENGTH_SHORT).show();
        }
    } else {
        LogUtil.w(getClass(), "Application does not have ACCESS_NETWORK_STATE Permission");
    }

注意:" if(connectivityManager.getBackgroundDataSetting()" 适用于 2.3.3,但在 android 4.0+ 替换为 " if (info.isConnected() == true)" 时,即使后台数据设置受到限制,也始终返回 true。

参考

4

1 回答 1

0

Android 4.x 仅在应用不在前台时进行检查时返回您未连接。看看您是否可以在其他应用程序处于前台时安排在服务中进行此检查。

于 2014-03-03T16:02:42.597 回答