2011-10-20 7 views
0
public void getCurrentLocation(){ 

final LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

    LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
     // 
     } 

     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 

     public void onProviderEnabled(String provider) {} 

     public void onProviderDisabled(String provider) { 
      if(provider=="gps"){ 
      Toast.makeText(getApplicationContext(), "GPS is off", Toast.LENGTH_LONG).show(); 

      startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
      } 
      Log.i("lm_disabled",provider); 
     } 
     }; 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, locationListener); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, locationListener); 
} 

これは正当なコードのようです。ただし、if式は決して実行されません。私はアプリケーションをデバッグしましたが、プロバイダーは "gps"ですが、文字列型ですが、falseが返された場合は...onProviderDisabled - プロバイダを区別する

私はここで何が欠けていますか?

答えて

4

if文でprovider.equals("gps")を実行する必要があります。 javaでは、.equals()メソッドを使用して文字列を比較する必要があります。 javaでは、==は、2つのオブジェクト参照が一致するかどうかをチェックし、文字列が同じでないかどうかを確認します。詳細については、StackoverFlow postを参照してください。

+0

ありがとうございました!それは働いている。 – WraithLux

+6

これは今後変更される可能性があるため、 "gps"の代わりにLocationManager.GPS_PROVIDERも使用する必要があります。 – Rick

関連する問題