0

我需要在我的 Android 应用程序中设置 gps。但是函数 requestLocationUpdates 需要以这种方式检查权限:

    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
    {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
        return;
    }
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

如果我删除返回(从如果)应用程序崩溃。如果我把返回函数 requestLocationUpdates 将不会被调用!

怎么修?

4

1 回答 1

2

您不能在requestPermissions之后调用requestLocationUpdates

requestPermissions是一个异步调用,“this”(你的活动)是你的监听器

您必须在您的活动中实施:

 @Override
 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
      //check if all the grantResult are equal to PackageManager.PERMISSION_GRANTED
 }

在该函数中检查权限是否被接受,如果为 TRUE,则调用您的 requestLocationUpdates。

于 2016-04-11T17:04:56.627 回答