2011-10-20 40 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中,==檢查兩個對象引用是否匹配,而不是字符串是否相同。有關更多信息,請參見StackoverFlow post

+0

謝謝!它正在工作。 – WraithLux

+6

您還應該使用LocationManager.GPS_PROVIDER而不是「gps」,因爲這可能會在將來發生變化。 – Rick