即使Android 4.2.2中的模拟设置为“关闭”,Settings.Secure.ALLOW_MOCK_LOCATION始终返回1

时间:2018-11-21 09:07:08

标签: android location settings mock-location

我正在开发一个检测位置是否为假的应用程序。我使用下面的代码进行检测:

private void mockLocationStatus(){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        if (location.isFromMockProvider())
            obj.IsMockLocation = "true";
        else
            obj.IsMockLocation = "false";
    } else {
        if (isMockSettingsON(context))
            obj.IsMockLocation = "true";
        else
            obj.IsMockLocation = "false";
     }
 }


 public static boolean isMockSettingsON(Context context) {
    if (Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0"))
        return false;
    else
        return true;
}

在从Android 4.2到8.1版的大多数测试设备中,它都能正常工作,直到一个用户说我不使用任何模拟位置应用,并且他说设置中没有开发人员选项,但他发送了真实的假位置标记到服务器。用户的Android版本是4.2.2。我可以在设置中以其他方式启用模拟位置吗?我的问题代码是什么?是否可以在设置中关闭模拟位置,或者不启用开发人员选项,但isMockSettinsON返回true?

0 个答案:

没有答案