1

我试图找到使以下行工作:

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"/>

但是,它仍然不起作用。

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

4

3 回答 3

0

添加这两个权限:

    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.INTERNET"/>
于 2016-04-05T10:33:43.787 回答
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;

    }
}
于 2016-04-05T10:12:41.310 回答
0

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

于 2016-04-05T10:27:30.340 回答