首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.isProviderEnabled(LocationManager.NETWORK_PROVIDER)关闭时总是返回false吗?

.isProviderEnabled(LocationManager.NETWORK_PROVIDER)关闭时总是返回false吗?
EN

Stack Overflow用户
提问于 2020-11-21 05:04:10
回答 1查看 128关注 0票数 0

如果GPS关闭,可以从网络获取位置吗?

我的Demo可以从网络和GPS获取当前用户位置,但仅当GPS打开时。

如果我试图从LastKnownLocation获取位置,我也会得到null。

代码语言:javascript
运行
复制
 @Override
 protected void onResume() {
 super.onResume();
        
 if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            startActivity(new Intent(MainActivity.this, Permissions.class));
            return;
        }
    

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    isGPS = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    isNetwork = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    
    if (!isGPS && !isNetwork) {
Log.d("TAG", "gps and network false");
           
}else {
if (isGPS) {
loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (loc != null) {
Log.i("TAG", "gps loc found");}
}

if (isNetwork) {
loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (loc != null) {
Log.i("TAG", "network loc found");
}
}

我已经测试了下面的代码。如果我关闭设备-gps,它也会返回位置为null:GPSTracker.java

EN

回答 1

Stack Overflow用户

发布于 2020-11-25 19:14:44

如果您试图从网络请求位置作为后备全球定位系统,您将需要启用ACCESS_COARSE_LOCATION。此外,即使启用了权限,您也必须请求位置更新,以刷新和更新最后一个网络位置。只有在此之后,您才能获得最后一个已知位置的可用,否则,您将得到真正的null。

要使您的代码工作,您可能只需要在使用getSystemService(Context.LOCATION_SERVICE);之前调用您的GPSTracker.getLocation()

您可以在以下位置查看getLastKnownLocation的文档:https://developer.android.com/reference/android/location/LocationManager#getLastKnownLocation(java.lang.String)

从给定的提供程序获取最后一个已知位置,如果没有最后一个已知位置,则为null。在某些情况下,返回的位置可能很旧,因此应该始终检查位置的年龄。

这永远不会激活传感器来计算新位置,并且只会返回缓存的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64936881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档