Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MAPAPIv2:无权限_Android_Google Maps - Fatal编程技术网

Android MAPAPIv2:无权限

Android MAPAPIv2:无权限,android,google-maps,Android,Google Maps,这里是我的清单代码片段: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> @Over

这里是我的
清单
代码片段:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
@Override
    public void onMapReady(GoogleMap googleMap) {
        this.googleMap = googleMap;
        setInfoWindowAdapter();
        if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            this.googleMap.setMyLocationEnabled(true);
        } else {
            Toast.makeText(getActivity(), getString(R.string.no_permissions), Toast.LENGTH_LONG).show();
        }
    }

当我开始在一个安卓4.3的地图工作良好。但是如果我从Android 6.0开始,我会收到一条消息(Toast)`没有权限

如果你在Android 6+上测试你的应用程序,你的代码工作正常。您需要从Android 6+上的用户获得运行时权限。以下是您如何做到这一点:

    int permissionCheck = ContextCompat.checkSelfPermission(MapActivity.this,
            Manifest.permission.ACCESS_FINE_LOCATION);
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(MapActivity.this,
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    } else {
          //permission is already granted
    }

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
    switch (requestCode) {
        case 1: {
            if (grantResults.length > 0) {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //granted
                } else {
                    //not granted
                }
            } else {
                //not granted
            }
        }
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}
首先:尝试使用此命令请求权限:

 boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
    if(permissionGranted) {
        // {Some Code}
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200);
    }
第二个:OnRequestPermissionsResultCallback的实现

...implements  ActivityCompat.OnRequestPermissionsResultCallback {
Third:覆盖
onRequestPermissionsResult
方法

 @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case 200: {
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // {Some Code}
                }
            }
        }
    }

您是否添加了OnRequestPermissionsResult我想您需要运行时权限如何才能做到这一点?