测试是否启用了后台数据和数据包数据

时间:2012-10-02 08:30:46

标签: android networking

我希望检测用户是否同时启用了后台数据(设置 - >帐户和同步 - >后台数据)和分组数据(设置 - >无线和网络 - >移动网络 - >使用数据包数据)所以我可以告诉用户如何启用它们。

link说明如何测试后台数据,但已弃用。建议说使用getActiveNetworkInfo()但这可能会返回WIFI连接,因此如果启用了后台数据则不会显示。

我没有找到任何关于如何检测数据包数据是否启用的链接。

1 个答案:

答案 0 :(得分:9)

我有这个完全相同的问题,我不得不开始赏金以获得答案。花费我三分之一的声誉,但非常值得。

boolean mobileDataEnabled = false; // Assume disabled
        ConnectivityManager cm1 = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        try {
            Class cmClass = Class.forName(cm1.getClass().getName());
            Method method = cmClass.getDeclaredMethod("getMobileDataEnabled");
            method.setAccessible(true); // Make the method callable
            // get the setting for "mobile data"
            mobileDataEnabled = (Boolean)method.invoke(cm1);
        } catch (Exception e) {
            // Some problem accessible private API
            // TODO do whatever error handling you want here
        }

正如我所说的那样,我不能因为知道这一点而声称有信用,https://stackoverflow.com/users/769265/david-wasser已回答了我的问题

但它让我付出了代价,所以如果你想接受这个作为答案,我可以开始给我一些声望点了! :)