Settings.Secure.ALLOW_MOCK_LOCATION始终返回1,即使模拟设置为关闭

时间:2016-05-06 05:17:45

标签: android gps location

我正在开发一个应用程序,如果使用此代码启用模拟位置设置,用户将无法使用它

if (Settings.Secure.getString(context.getContentResolver(),
            Settings.Secure.ALLOW_MOCK_LOCATION).equals("0"))
        return false;
    else
        return true;

在我从KitKat到Marshmallow系统的大多数测试设备中它运行良好,直到我在使用Marshmallow OS的单个设备上尝试我的应用程序,模拟设置显然是OFF,但上面的代码一直告诉我模拟设置为ON,这是一个错误吗?还是我错过了什么?

2 个答案:

答案 0 :(得分:6)

here查看此答案。

boolean isMock = false;
if (android.os.Build.VERSION.SDK_INT >= 18) {
    isMock = location.isFromMockProvider();
} else {
    isMock = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
}

这可能对您有所帮助

答案 1 :(得分:0)

根据android开发人员参考:https://developer.android.com/reference/android/provider/Settings.Secure.html ALLOW_MOCK_LOCATION现已在SDK 23中弃用。

您将获得的默认值在棉花糖中始终为1。