如何选择一个应用程序以在 Marshmallow 上以编程方式允许模拟位置?

Posted

技术标签:

【中文标题】如何选择一个应用程序以在 Marshmallow 上以编程方式允许模拟位置?【英文标题】:How to pick an app to allow mock locations programmatically on Marshmallow? 【发布时间】:2016-12-20 21:34:29 【问题描述】:

Marshmallow 之前的“允许模拟位置”选项可以通过编程方式更改(需要 root)

Settings.Secure.putInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION, 1);

但现在这个选项是特定于应用程序的,这意味着您必须在开发者选项中选择模拟应用程序。

有没有办法以编程方式更改此设置(将我的应用插入允许列表)?

【问题讨论】:

【参考方案1】:

不,没有办法授予设置默认模拟位置应用程序的权限。您最多可以在第一次打开应用程序时向用户显示通知,通过设置向他们提供有关如何完成此操作的说明。

请注意,要执行此操作,用户不需要 root 访问权限,而是需要 developer access。这允许您设置默认的模拟位置应用程序。

即使是市场上最好的模拟位置应用程序也没有默认实现此功能。希望这会有所帮助:)

--编辑--

但是,有一种方法可以让用户更轻松地访问它。您可以使用以下代码将用户指向设置模拟位置应用程序的实际屏幕:

startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));

这会将用户指向设置模拟位置应用的屏幕。

【讨论】:

首先你让我很难过 :) 但从技术上讲,我们假设应用程序位于根设备的系统分区中。而且我们知道默认的模拟位置应用程序信息存储在某个地方(settings.db?),所以在此之后,我们不是无法设置默认的模拟程序应用程序吗? 将用户转发到开发人员设置是已知的事情,所以在您编辑的答案中没有什么让我感到惊讶,也没有任何事情涉及我在编辑的答案中的评论。

以上是关于如何选择一个应用程序以在 Marshmallow 上以编程方式允许模拟位置?的主要内容,如果未能解决你的问题,请参考以下文章

我的应用不会显示在 android.intent.action.VIEW 的选择器对话框中,只有在 Marshmallow 上具有 mime 类型 video/*

如何从 Android Marshmallow 中的服务请求权限

如何以编程方式打开 Android 6.0 (Marshmallow) 上特定应用的权限屏幕?

如何在 Android Marshmallow 平台上高效开发系统应用?

如何修改此 jQuery 以在下拉列表中动态显示和隐藏相关选择选项?

如何从 Android 版本 Marshmallow 开始请求从 Android 拨打电话的权限?