不适用于Android Studio- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);

时间:2016-04-05 09:26:17

标签: android android-studio android-location android-gps

我正试图找到以下一行:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

工作室将其标记为“错误”,并建议检查是否已设置所有权限或处理SecurityException。

我认为我已经设置了所有必要的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

但是,它仍然不起作用。

有人遇到同样的问题吗? 提前谢谢!

3 个答案:

答案 0 :(得分:0)

你可以使用这些代码。在android studio中你必须在运行时检查动态权限

  if (Build.VERSION.SDK_INT >= 23 &&
                ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(getActivity(),
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);
        } else {

            getLocation();

        }

 @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_LOCATION:
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                getLocation();


            }
            break;

    }
}

答案 1 :(得分:0)

这是因为在Marshmallow中,在运行时向用户询问权限。因此我们需要处理用户是否已授予该特定权限。

答案 2 :(得分:0)

添加以下两项权限:

    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.INTERNET"/>