【发布时间】:2015-12-11 15:08:55
【问题描述】:
我在 Android 运行时检查权限时遇到了一些问题,其中目标 SDK 为 23。这是我主要活动中的一些代码。
public void GoToLocation(){
if(ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_FINE_LOCATION);
}
else {
locationManager= (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location locator = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
LatLng position = new LatLng(locator.getLatitude(), locator.getLongitude());
Marker m = myMap.addMarker(new MarkerOptions().position(position));
mapsMarkers.add(m);
myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(position, 6));
}
}
问题是:这个方法是通过用户在地图上的点击来调用的。我不知道为什么,但首先if 返回false(这意味着尽管没有授予权限!)。所以它转到else 子句并引发空引用异常,导致定位器获取null(因为我从未授予这些权限,requestMethod() 没有机会被调用)。
我关注了this,但似乎我犯了一些错误。 任何帮助将不胜感激。
【问题讨论】:
-
你在哪里测试你的代码?在任何棉花糖装置中?请从设置中检查应用程序的授予权限。如果授予权限,则关闭权限并再次测试应用程序。
标签: android google-maps sdk permissions