使用getActiveNetworkInfo()作为已弃用的ConnectivityManager.getBackgroundDataSetting()的替代方法并不尊重它

时间:2013-01-04 12:29:46

标签: android background-process android-4.0-ice-cream-sandwich connectivity

对于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但是当用“if (info.isConnected() == true)”替换为android 4.0+时,即使后台数据设置受到限制,也始终返回true。

Reference

1 个答案:

答案 0 :(得分:0)

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