在没有用户设置页面的情况下禁用模拟位置

Disable Mock Locations without user settings page

我创建了用于检查 Mock Settings 状态的实现,我想知道,我可以动态禁用 Mock Locations 吗?

如果

dynamically

你的意思是以编程方式(即通过应用程序中的对话框/一段代码),答案是。模拟位置是开发人员的一项功能,因此要 enable/disable 它们,您 必须 将用户发送到系统的开发人员设置。

在将用户发送到那里之前,您可能想要检测是否实际启用了模拟位置。对于 API 级别 < 18,这是通过 Settings.Secure flag, for >= 18 you can use the newly introduced Location.isFromMockProvider() 完成的。我写了一个小实用程序 class 可以可靠地检测所有最近(非根)Android 设备上的模拟位置:

LocationAssistant - Hassle-free location updates on Android

它处理并封装了大部分位置设置,也可以拒绝模拟位置。也许您会发现 class 对您的用例很方便。