'的checkPermission'获取位置的问题

时间:2017-03-19 09:09:12

标签: android permissions get location

我是新的Android开发人员,一开始我试图访问手机的位置

我做了checkselfpermission,但它没有帮助,它还没有编译给我

自检许可

我在这里检查是否有权限,如果没有,我会要求:

protected void getLocation() {
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION)) {
        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);
        }
    }
}

获得许可后

我在这里尝试访问该位置,但该行中存在异常: location = locationManager.getLastKnownLocation(provider);

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_LOCATION:
                {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        // Get the location manager
                        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                        // Define the criteria how to select the locatioin provider -> use
                        // default
                        Criteria criteria = new Criteria();
                        provider = locationManager.getBestProvider(criteria, false);
                        location = locationManager.getLastKnownLocation(provider);
                        onLocationChanged(location);
                        Toast.makeText(getApplicationContext(), "Location recived.",
                            Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(),
                            "Can't track your location.", Toast.LENGTH_LONG).show();
                        return;
                    }
                }

我将感谢你们的任何帮助

2 个答案:

答案 0 :(得分:0)

您是否已在清单

中写下这些权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

答案 1 :(得分:0)

确保您已在permissions档案中声明manifest -

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

您也必须检查两者的运行时权限。