我希望检测用户是否同时启用了后台数据(设置 - >帐户和同步 - >后台数据)和分组数据(设置 - >无线和网络 - >移动网络 - >使用数据包数据)所以我可以告诉用户如何启用它们。
此link说明如何测试后台数据,但已弃用。建议说使用getActiveNetworkInfo()但这可能会返回WIFI连接,因此如果启用了后台数据则不会显示。
我没有找到任何关于如何检测数据包数据是否启用的链接。
答案 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已回答了我的问题
但它让我付出了代价,所以如果你想接受这个作为答案,我可以开始给我一些声望点了! :)