Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android API调用以确定用户设置;“数据启用”;_Android_Android Wireless - Fatal编程技术网

Android API调用以确定用户设置;“数据启用”;

Android API调用以确定用户设置;“数据启用”;,android,android-wireless,Android,Android Wireless,我的程序尝试检测移动网络在某个位置是否可用 问题是,当我没有数据连接时,并不意味着网络不存在。。。这取决于用户的偏好。 有一些API可用于NetworkInfo.isAvailable(),也可用于用户设置,如用户是否正在漫游、漫游是否已启用或AirplaneMode是否已启用 我的问题是,我无法确定用户是否在Settings/WirelessNetworks/MobileNetworks下禁用了数据服务 听起来是个小问题,但我还没有找到API调用。在您的活动中: boolean mobileD

我的程序尝试检测移动网络在某个位置是否可用

问题是,当我没有数据连接时,并不意味着网络不存在。。。这取决于用户的偏好。 有一些API可用于
NetworkInfo.isAvailable()
,也可用于用户设置,如用户是否正在漫游、漫游是否已启用或AirplaneMode是否已启用

我的问题是,我无法确定用户是否在Settings/WirelessNetworks/MobileNetworks下禁用了数据服务

听起来是个小问题,但我还没有找到API调用。

在您的活动中:

boolean mobileDataAllowed = Settings.Secure.getInt(getContentResolver(), "mobile_data", 1) == 1;

来源:

我知道上面的答案适用于OP。但在少数设备中,我发现即使数据被禁用,它也会返回true。 所以我找到了另一个解决方案,它是在Android API中

这种方法将非常有用

当禁用蜂窝数据时,Lower函数返回false,否则返回true

private boolean checkMobileDataIsEnabled(Context context){
        boolean mobileYN = false;

        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if (tm.getSimState() == TelephonyManager.SIM_STATE_READY) {
            TelephonyManager tel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//          if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1)
//          {
//              mobileYN = Settings.Global.getInt(context.getContentResolver(), "mobile_data", 0) == 1;
//          }
//          else{
//              mobileYN = Settings.Secure.getInt(context.getContentResolver(), "mobile_data", 0) == 1;
//          }
            int dataState = tel.getDataState();
            Log.v(TAG,"tel.getDataState() : "+ dataState);
            if(dataState != TelephonyManager.DATA_DISCONNECTED){
                mobileYN = true;
            }

        }

        return mobileYN;
    }

在哪里可以找到您可以传递给Setttings.Secure的所有字符串(即“移动数据”)的列表?正式,和。对于未记录或隐藏的设置,您需要查看core/java/android/provider/settings.java的源代码,您可以查看这些源代码。您好,有没有办法接收一些更改设置的通知,然后才读取“mobile_data”?@ransh我不确定。不管怎样,最好还是单独问这个问题。@bmaupin当我收到禁用wifi的通知时,它会给我false,但我的移动数据按钮已启用y它是否仍像你提到的那样工作?当你收到禁用wifi的通知时,它不会给出excat结果。即使移动数据被禁用,它也会返回falseenabledwell,它适用于所有设备。有趣的是,对于你没有工作的设备。在这种情况下,尝试其他答案。你有哪种装置?@Mohammadhussain Khatri我有红色3s prime