我在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,但似乎我犯了一些错误。 任何帮助将不胜感激。
答案 0 :(得分:0)
试试这个;
public class MyClient2 : MyClient
{
public override void Dispose()
{
// add your dispose information
base.Dispose(true);
}
}
确保在运行marshmallow或更高版本的设备中进行测试