Android 错误:java.lang.SecurityException:我的位置需要权限访问\u FINE\u location或访问\u rough\u location
我想在我的项目中使用谷歌地图。为此: 首先,我安装并配置插件>>tns插件添加nativescript谷歌地图sdk这个插件对我来说很好 第二步,我想在谷歌地图中显示我的当前位置,为此我安装了>>tns插件add nativescript Geology 在AndroidMainfest.xml中添加 在ts组件中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
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);
}