明确识别是不是在后台启用了android服务位置和gps
Posted
技术标签:
【中文标题】明确识别是不是在后台启用了android服务位置和gps【英文标题】:Identify distinctly if android service location and gps is enabled in background明确识别是否在后台启用了android服务位置和gps 【发布时间】:2015-10-05 14:41:54 【问题描述】:我有这种情况:我的 android 服务位置已启用,但我的 gps(gps 符号)未启用。
我想检查我的服务位置是否已启用并启动活动。 我想检查我的 gps(参见 gps 打印屏幕 - gps 符号)是否已启用,并向用户发送消息。
下面的代码检查我的 gps(参见 gps 打印屏幕 - gps 符号)是否已启用,但不检查服务位置是否已启用。
final LocationManager locationManager =
(LocationManager) context.getSystemService(context.LOCATION_SERVICE);
try
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
我需要识别这两种情况并处理这个...
假设我禁用了我的 gps(背景)。 (见 gps 打印屏幕 - gps 符号) 和 我已启用服务位置。
【问题讨论】:
***.com/questions/843675/…的可能重复 就是这样。我检查了使用 locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER 禁用了 gps 我怎么知道我的服务位置是否启用... 看起来您只启用了网络提供商。您也可以使用与检查 GPS 提供商相同的方式进行检查。 没有。在这种情况下,正如您在打印屏幕中看到的那样,我启用了服务位置并禁用了 gps (gps_provider)。 @drschultz 回复后,我明白了你在评论中所说的内容。 【参考方案1】:如果您使用LocationManager
来确定哪些位置服务可用,您将能够判断位置服务是打开还是关闭。例如,使用以下代码:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Log.d("LOCATION SERVICES", "isGpsEnabled="+isGpsEnabled+" isNetworkEnabled="+isNetworkEnabled);
如果设备定位服务已关闭,isGpsEnabled
和 isNetworkEnabled
都将为 false。如果只是关闭了 GPS,但打开了定位服务,isGpsEnabled
将是错误的,但isNetworkEnabled
将是正确的。如果设备打开了包括 GPS 在内的定位服务,那么两者都是正确的。
【讨论】:
以上是关于明确识别是不是在后台启用了android服务位置和gps的主要内容,如果未能解决你的问题,请参考以下文章
我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置
当应用程序处于后台时,带有 PendingIntent 的 Android FusedLocationClient 未收到位置更新