【问题标题】:Settings.Secure.ALLOW_MOCK_LOCATION always returns 1 even mock setting is Off即使模拟设置为 Off,Settings.Secure.ALLOW_MOCK_LOCATION 也始终返回 1
【发布时间】: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,这是一个错误吗?还是我在这里遗漏了什么?

【问题讨论】:

    标签: android gps location


    【解决方案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 对不起,我的错
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2018-11-04
      • 2019-05-28
      • 2011-11-09
      • 2018-08-23
      相关资源
      最近更新 更多