【问题标题】:Test if background data and packet data is enabled or not测试是否启用了后台数据和数据包数据
【发布时间】:2012-09-23 02:33:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: android networking


    【解决方案1】:

    我有同样的问题,我必须开始赏金才能得到答案。损失了我三分之一的声誉,但非常值得。

    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 回答的

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

    【讨论】:

    • 谢谢!这回答了我问题的一部分。与此同时,我已经升级到 Jelly Bean,这里谷歌已经从同步菜单中删除了背景数据:-/ 无论如何 - 我接受了你的回答,因为它解决了我在 JB 上的问题。
    • 啊,对,我没有意识到包数据和同步数据是不同的设置。我认为这是说同一件事的两种不同方式。似乎可以使用与上述相同的方法进行检查。如果我解决了,我会检查一下并回复你!
    • 我遇到了这个答案,它似乎回答了你问题的另一部分:stackoverflow.com/questions/8996327/…
    • 谢谢凯文。奇怪的是我在搜索时没有发现:-)
    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2012-11-21
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多