如果 GPS 被禁用,位置将无法进入三星手机

Posted

技术标签:

【中文标题】如果 GPS 被禁用,位置将无法进入三星手机【英文标题】:Location is not getting in samsung phone if GPS is disabled 【发布时间】:2013-07-19 15:24:57 【问题描述】:

我使用三星手机通过 LocationManager API 获取位置,如果禁用 GPS,我无法获取位置,通过网络提供商我无法获取位置。

这是代码,这在 HTC 和索尼甚至禁用 GPS 时都能正常工作,但在三星手机中却不行。

public Location getLocation() 
        try 
            mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);

            // getting GPS status
            isGPSEnabled = mLocationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

            // getting network status
            isNetworkEnabled = mLocationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER); //fails in samsung phone returns NULL

            if (isGPSEnabled == false && isNetworkEnabled == false) 
                // no network provider is enabled
             else 
                this.canGetLocation = true;
                if (isNetworkEnabled) 
                    mLocationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    if (mLocationManager != null) 
                        mLocation = mLocationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    
                
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) 
                    if (mLocation == null) 
                        mLocationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        if (mLocationManager != null) 
                            mLocation = mLocationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        
                    
                
            

         catch (Exception e) 
            e.printStackTrace();
        

        return mLocation;
    

【问题讨论】:

您的网络提供商启用了吗? 【参考方案1】:

这种行为是三星手机独有的。 HTC你不会遇到这个问题。

您必须启动 locationManager,因为默认情况下它会查看 google maps 缓存并且不关心缓存对于当前位置信息的陈旧程度。执行此操作,启动您的应用程序,形成不同的 gps 位置并注意它仍然显示旧位置。现在启动谷歌地图,然后重新启动你的应用程序,你的位置就会改变。要以编程方式启动您的应用程序以获取“当前位置”,请在调用 getLastKnownLocation 之前运行以下代码

YOUR_APPLICATION_CONTEXT.getLocationManager().requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) 
    
    @Override
    public void onProviderEnabled(String provider) 
    
    @Override
    public void onProviderDisabled(String provider) 
    
    @Override
    public void onLocationChanged(final Location location) 
    
);

【讨论】:

以上是关于如果 GPS 被禁用,位置将无法进入三星手机的主要内容,如果未能解决你的问题,请参考以下文章

vivo手机gps为啥定不了位置?

手机坐标检测

在 android 中获取更新位置和禁用 GPS 后如何获取?

华为手机被某种app禁设备了怎么办?

我无法获取 GPS 位置

手机导航GPS不能用怎么办手机导航不能用怎么办?