假设位置下设备的“使用无线网络”和“使用 GPS 卫星”设置未启用,是否仍然可以检索位置坐标。
目前,最好的是将用户重定向到未启用的设置页面。我发现这具有破坏性,因为需要离开应用程序。
如果我没记错的话,您可以以编程方式启用设置(我正确吗?)。
我不需要确切的坐标,是否可以在不启用设置的情况下获取手机信号塔 ID?
假设位置下设备的“使用无线网络”和“使用 GPS 卫星”设置未启用,是否仍然可以检索位置坐标。
目前,最好的是将用户重定向到未启用的设置页面。我发现这具有破坏性,因为需要离开应用程序。
如果我没记错的话,您可以以编程方式启用设置(我正确吗?)。
我不需要确切的坐标,是否可以在不启用设置的情况下获取手机信号塔 ID?
不,如果用户不想给你他的位置,你就没有办法得到他的位置。
这是一种安全措施,它的存在是有充分理由的。如果您试图破坏这一点,您的应用将被视为恶意应用。
将用户重定向到设置页面是最好的选择。
在不先询问用户的情况下以编程方式设置任何内容都是不好的做法。
您可以做的是,如果您无法获得位置,请让用户打开 GPS 或告诉他您的应用程序将无法工作并将关闭。
未经用户同意以编程方式打开位置设置是不可能的,更不用说不好的做法了。您可以提示用户并指示他打开位置设置,或者如果您的程序跟踪设备用户的进度,您可以让程序发送某种警报,告诉他们位置设置已关闭。
同意 - 在早期版本的 android 中,您可以以编程方式打开 GPS - 但较新的版本不允许这种情况发生。正如 Anup 所说 - 现在常见的可接受做法是将用户重定向到选项页面并允许用户选择允许应用程序使用的 GPS 的类型和性质。
别忘了,您不需要“离开应用程序”来让用户打开 GPS,您可以自己将它们发送到设置:
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
然后,这将返回到您停止的应用程序 - 为用户提供无缝体验,并且他们将从其他 Android 应用程序熟悉的体验。
Deep Dive into Location有一套 Android LocationManager 的最佳实践。您不需要激活 GPS——在许多情况下,移动网络本身可以很好地估计位置,而不会占用额外的电池。