Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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 错误:java.lang.SecurityException:我的位置需要权限访问\u FINE\u location或访问\u rough\u location_Android_Google Maps_Geolocation_Nativescript - Fatal编程技术网

Android 错误:java.lang.SecurityException:我的位置需要权限访问\u FINE\u location或访问\u rough\u location

Android 错误:java.lang.SecurityException:我的位置需要权限访问\u FINE\u location或访问\u rough\u location,android,google-maps,geolocation,nativescript,Android,Google Maps,Geolocation,Nativescript,我想在我的项目中使用谷歌地图。为此: 首先,我安装并配置插件>>tns插件添加nativescript谷歌地图sdk这个插件对我来说很好 第二步,我想在谷歌地图中显示我的当前位置,为此我安装了>>tns插件add nativescript Geology 在AndroidMainfest.xml中添加 在ts组件中 onMapReady(event) { this.mapView = event.object; this.ws.mobile_base_pharmacyGetAll

我想在我的项目中使用谷歌地图。为此:

首先,我安装并配置插件>>tns插件添加nativescript谷歌地图sdk这个插件对我来说很好

第二步,我想在谷歌地图中显示我的当前位置,为此我安装了>>tns插件add nativescript Geology

在AndroidMainfest.xml中添加

在ts组件中

onMapReady(event) {
    this.mapView = event.object;
    this.ws.mobile_base_pharmacyGetAll().subscribe(
        items => {
            console.log(items)
            this.items = items;
            if (items !== undefined || items !== undefined) {
                for (let i = 0; i < this.items.length; i++) {            
                    var marker = new Marker();
                    marker.position = Position.positionFromLatLng(this.items[i].latitude, this.items[i].longitude);
                    marker.title = this.items[i].name;
                    marker.snippet = this.items[i].address1;
                    marker.userData = { index: 1 };
                    this.mapView.addMarker(marker);   
                    this.mapView.myLocationEnabled = true;   
               }
            }
        },
        err => console.error('err', err),
        () => console.log('error')
    );
}
Android 5.1.1中的这段代码运行得非常好。在Android版本7和更高版本中不起作用。错误:

JS:ERROR错误:java.lang.SecurityException:我的位置需要 权限访问\u精细位置或访问\u粗略位置JS: com.google.maps.api.android.lib6.impl.bg.c:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 040406-253824076:545 JS: com.google.android.gms.maps.internal.m.a:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 040406-253824076:361 JS: hp.onTransact:com.google.android.gms.dynamite_mapsdynamite@17785050@17.7.85 040406-253824076:4 JS: android.os.Binder.Transact-Binder.java:499 JS: com.google.android.gms.internal.maps.zza.transactionandredException返回未知 资料来源: com.google.android.gms.maps.internal.zzg.setMyLocationEnabledUnknown 资料来源: com.google.android.gms.maps.GoogleMap.setMyLocationEnabledUnknown Source JS:com.tns.Runtime.callJSMethodNativeNative方法JS: com.tns.Runtime.dispatchCallJSMethodNativeRuntime.java:1203 JS: com.tns.Runtime.callJSMethodImplRuntime.java:1083 JS: com.tns.Runtime.callJSMethodRuntime.java:1070

你能给我一些建议吗?问题是什么?如何解决?我在谷歌找不到任何解决方案

谢谢大家!

更新:

我改变了它,但没有改变,错误存在


启动Android 6.0时,用户必须在运行时批准权限。在这里你可以找到官员


处理运行时权限的一个有用的反应库是:

从Android 6.0 API级别23开始,用户可以随时撤销任何应用程序的权限,即使该应用程序的目标API级别较低

在MainActivity中添加此代码

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
        PackageManager.PERMISSION_GRANTED &&
        ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
        PackageManager.PERMISSION_GRANTED) {
    googleMap.setMyLocationEnabled(true);
    googleMap.getUiSettings().setMyLocationButtonEnabled(true);
} else {
    ActivityCompat.requestPermissions(this, new String[] {
      Manifest.permission.ACCESS_FINE_LOCATION, 
      Manifest.permission.ACCESS_COARSE_LOCATION }, 
      TAG_CODE_PERMISSION_LOCATION);
}

查看详细信息

您是否在清单中添加了权限是的,我更新了我的帖子。ThnX您是否也为运行时权限添加了代码?的可能重复项请不要在本机项目和NativeScript之间混淆,您不应该使用平台文件夹编辑任何内容,因为它是由{N}CLI自动生成的。我将此标记为重复,因为答案已经包含在我对你上一篇文章的回答中。演示应用程序清楚地显示了您应该如何获得权限。请您指定,我在哪个文件中添加此代码?您可以在onCreate方法中添加您的MainActivity。您可以在post中查看我的更新吗?
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
        PackageManager.PERMISSION_GRANTED &&
        ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
        PackageManager.PERMISSION_GRANTED) {
    googleMap.setMyLocationEnabled(true);
    googleMap.getUiSettings().setMyLocationButtonEnabled(true);
} else {
    ActivityCompat.requestPermissions(this, new String[] {
      Manifest.permission.ACCESS_FINE_LOCATION, 
      Manifest.permission.ACCESS_COARSE_LOCATION }, 
      TAG_CODE_PERMISSION_LOCATION);
}