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

Posted

技术标签:

【中文标题】即使模拟设置为 Off,Settings.Secure.ALLOW_MOCK_LOCATION 也始终返回 1【英文标题】:Settings.Secure.ALLOW_MOCK_LOCATION always returns 1 even mock setting is Off 【发布时间】:2016-09-01 01:50:18 【问题描述】:

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

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

嗯,它在我的大多数测试设备(从 KitKat 到 Marshmallow 系统)中运行良好,直到我在这台带有 Marshmallow OS 的设备上尝试了我的应用程序,模拟设置显然是关闭的,但上面的代码一直告诉我模拟设置为ON,这是一个错误吗?还是我在这里遗漏了什么?

【问题讨论】:

【参考方案1】:

查看来自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");

这可能对你有帮助

【讨论】:

感谢您的回复,我一直在研究它,我只是很困惑这个简单的代码适用于 2 个三星棉花糖系统,但它不适用于另一个 1 我不明白为什么我需要在清单中添加它,因为我不打算在我的应用程序中使用模拟位置,我只需要检查模拟设置是打开还是关闭,它没有在 1 个关键设备中工作。好吧..我确实尝试添加它,但它告诉我应该只将它放在调试清单中 @Jeff 对不起,我的错 也许这会有所帮助***.com/questions/32668494/…【参考方案2】:

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

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

【讨论】:

以上是关于即使模拟设置为 Off,Settings.Secure.ALLOW_MOCK_LOCATION 也始终返回 1的主要内容,如果未能解决你的问题,请参考以下文章

即使设置了模拟,ASP.NET 仍以 ASPNET 的身份访问文件夹

VM 虚拟机 总是会自动挂起,即使在虚拟系统中使用了power -h off 还是会,如何禁止VM自动挂起?

SET NOCOUNT ON/OFF

IIS 7.5 即使在禁用时也使用模拟

sql中的SET NOCOUNT ON/OFF

即使设置为亮,状态栏也保持黑色