首页 > 解决方案 > checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) 返回 true,即使我的 GPS 已关闭

问题描述

如果未授予权限,我正在尝试提示用户激活 GPS。我无法进入请求部分,因为即使我的 GPS 关闭,检查也始终返回 true。

这是我的代码:

if (ContextCompat.checkSelfPermission(context, ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{ACCESS_FINE_LOCATION}, 1);
}

由于我的 GPS 关闭,我希望条件返回 true,但它返回 false。

你能向我解释一下为什么我会因此而变得虚假吗?

预先感谢您的帮助。

标签: androidpermissionslocation

解决方案


ContextCompat.checkSelfPermissiontrue如果用户已授予您的应用程序的权限,则返回ACCESS_FINE_LOCATION. 它与设备上的 GPS 状态无关。检查此链接以获取有关其工作原理的更多信息。

但是,如果您想访问或检测 GPS 的当前状态,如果它在应用程序中处于打开或关闭状态,您可以使用以下代码来执行此操作:

if ( (context.getSystemService(Context.LOCATION_SERVICE) as LocationManager).isProviderEnabled(LocationManager.GPS_PROVIDER) ) 
{
  //gps is on in the device
}

推荐阅读