1

我遵循了如何检查是否存在 GPS 传感器?
并据此进行了更改,但在所有情况下我的应用程序都崩溃了。我用了

PackageManager pm = getPackageManager();
boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);

然后我再次修改了我的代码并使用了

LocationManager lm = (LocationManager)getSystemService(LOCATION_SERVICE);
if (lm.getProvider(LocationManager.GPS_PROVIDER) == null) {
    Toast.makeText(getApplicationContext(), 
                       "GPS sensor is not available", Toast.LENGTH_LONG).show();
}

但在这两种情况下,我的应用程序都会崩溃。请告诉我我哪里错了?

4

1 回答 1

2

我在我的代码中发现了错误并进行了必要的更改。
最初我的代码是

if((ProvidePreference.equalsIgnoreCase("BestAvailable")) {
//start both gps and network
     this.LocationMngr.requestLocationUpdates(
                   LocationManager.GPS_PROVIDER,captureFrequencey, 100, this); 
     this.LocationMngr.requestLocationUpdates(
                   LocationManager.NETWORK_PROVIDER,captureFrequencey, 0, this);
}

然后我将代码更改为

if((ProvidePreference.equalsIgnoreCase("BestAvailable") && 
             LocationMngr.getProvider(LocationManager.GPS_PROVIDER) != null)) {
//start both gps and network
     this.LocationMngr.requestLocationUpdates(
                 LocationManager.GPS_PROVIDER,captureFrequencey, 100, this); 
     this.LocationMngr.requestLocationUpdates(
                 LocationManager.NETWORK_PROVIDER,captureFrequencey, 0, this);
} else {
//start network 
     this.LocationMngr.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER,captureFrequencey, 0, this);
}

注意 - 如果提供程序在系统中不可用,则不应尝试启动它。

于 2013-04-20T08:23:35.427 回答