无法从GPS检查返回布尔值

时间:2013-03-11 20:50:05

标签: java android

我试图检测设备上的GPS是否已打开。

目前我只是返回一个布尔值true或false值,然后继续使用我的代码,或者将用户引导至GPS设置。

当我返回布尔值时,我的代码崩溃了。我调试了它,但仍然无法看到为什么它返回一个值。

以下是代码:

  GPSYesOrNo g = new GPSYesOrNo(this);

  check = g.checkStatus();
  // check if GPS enabled
  if (check == true) {
     Intent Appoint = new Intent("com.example.flybaseapp.appointmantMenu");
     startActivity(Appoint);
  } else {  
     alert();
  }

GPSYesOrNo类:

public class GPSYesOrNo {
   Context cc;
   private LocationManager locationManager;
   boolean enable;

   public GPSYesOrNo(Context c) {
      this.cc = c;
      checkStatus();
   }

   public boolean checkStatus() {
      locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      boolean enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

      if (enabled) {
         return true;
      } else {
         return false;
      }
   }
}

谁能看到我哪里出错了?

2 个答案:

答案 0 :(得分:4)

您要分配启用,而不是比较:

if(enable = true)

改为将其更改为==,您应该做得很好。像其他人说的那样,if (enable)看起来会更清洁。

<强>更新

使用新信息,当您在其上调用isProviderEnabled时,您的locationManager似乎为null。在调用checkStatus()之前验证它是否设置正确。

答案 1 :(得分:1)

你不应该扩展Activity,只需传入一个上下文就可以获得一个locationManager。无论如何,您的应用程序崩溃了,因为您没有使用context参数调用构造函数。因此cc为空。顺便说一下getSystemService(cc.LOCATION_SERVICE)应该是getSystemService(Context.LOCATION_SERVICE)

更改

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

locationManager = (LocationManager) cc.getSystemService(Context.LOCATION_SERVICE);